服务器端: 建立一个新的工程,把Microsoft Winsock Control 控件加进来,如下图放置控件,主要就五个:两个文本框用于显示收到数据以及输入发送数据;一个CommandBotton于发送数据;一个小图标显示是否联接(联接了就显示出来visible=True);最主要的是Winsock控件,所有的事都是它干的,而且从不显示出来(默默无闻)。 下面是代码,注释的较为清楚: Option Explicit Dim IsConnectionOpen As Boolean
Private Sub Command1_Click() If IsConnectionOpen = False Then MsgBox "未建立联接!" ''''如果未建立连接,就弹出这么一个对话框 Else Winsock1.SendData Text2.Text ''''Socket就这么把数据发出去了,很简单 End If End Sub
Private Sub Form_Load() Winsock1.LocalPort = 1111 Winsock1.Listen ''''Socket在程序启动时监听端口1111 Image1.Visible = False IsConnectionOpen = False ''''开始状态为未联接 End Sub
Private Sub Winsock1_Close() ''''对方Socket关闭触发这个事件 Winsock1.Close ''''关闭自己 End ''''那也就把程序关了吧 End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) ''''接收到对方联接 ''''请求触发这个事件 If Winsock1.State <> sckClosed Then Winsock1.Close ''''使Socket在接收 ''''联接请求之前保持关闭状态
Winsock1.Accept requestID ''''Winsock1自己接收联接请求,与客户端Socket ''''建立联接 IsConnectionOpen = True Image1.Visible = True ''''现在联接好了 End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)''''收到数据触发这个事件 Dim str As String
Winsock1.GetData str ''''收到数据时,Winsock1把数据写入缓存str Text1.Text = Text1.Text + str + Chr (13) + Chr (10) Text1.SelStart = Len (Text1.Text) ''''在文本框中显示接收的数据 End Sub