模拟QQ消息发送需要建立2个工程,一个作为服务器端,一个作为客户端,偶通过用客户端向服务器端发送消息,并在服务器端显示发送的消息来介绍winsock。 大家可以在此基础上用VB作个局域网的聊天室。
偶也是刚学winsock,有什么错误或更好的方法请大家多多指教。。呵呵。
首先新建一个工程,作为服务器,在部件里找到Micrsoft Winsock Control 6.0(sp6)并选中,窗口如下:
其中: 为Winsock控件
服务器的代码如下(有注释):注意Winsock控件的名称为“ServerTCP”
Private Sub cmdExit_Click()
ServerTCP.Close
Unload Me
End Sub
Private Sub Form_Load()
Me.Left = 100
Me.Top = 100
ServerTCP.LocalPort = 1001 ' 设置本地端口,可以随便设置
ServerTCP.Listen ' 桢听状态,简单的说就是将服务器打开
End Sub
Private Sub ServerTCP_ConnectionRequest(ByVal requestID As Long) ' 当客户端请求连接时,则触发此事件
If ServerTCP.State <> sckClosed Then ServerTCP.Close ' 当服务器为打开状态则关闭
ServerTCP.Accept requestID
End Sub
Private Sub ServerTCP_DataArrival(ByVal bytesTotal As Long) ' 当数据到达时,触发DataArrival事件
Dim strDate As String
ServerTCP.GetData strDate ' 接受数据
If txtReceived.Text = Empty Then
txtReceived.Text = strDate
Else
txtReceived.Text = txtReceived.Text & vbCrLf & strDate
End If
End Sub
然后再新建一个工程,作为客户端,一样要在部件里找到Micrsoft Winsock Control 6.0(sp6)并选中,窗口如下:
客户端的代码如下(有注释):注意Winsock控件的名称为“ClientTCP”
Private Sub cmdClear_Click() ' 清空发送框
txtSend.Text = Empty
End Sub
Private Sub cmdConnect_Click()
ClientTCP.Connect ' 连接到服务器
cmdSend.Enabled = True
End Sub
Private Sub cmdExit_Click()
ClientTCP.Close
Unload Me
End Sub
Private Sub cmdSend_Click() ' 发送消息
If Trim(txtSend.Text) <> Empty Then
ClientTCP.SendData Trim(txtSend.Text) ' 发送消息
txtSend.Text = Empty
End If
End Sub
Private Sub Form_Load()
ClientTCP.RemoteHost = "127.0.0.1" ' 设置远程服务器的名称,既服务端的IP
ClientTCP.RemotePort = 1001 ' 设置为远程服务器的端口号,必须与服务器设置的端口号一样
cmdSend.Enabled = False
End Sub
OK! 所有代码以完成,下面来看看效果怎样:
先在客户端按“连接。。”的命令按钮,是客户端连接到服务器,这时“发送”按钮则不在是灰色,然后再在消息框中写消息,写完消息后按“发送”按钮发送消息。 则消息会在服务器窗口中显示:
按了发送消息后:
评论