第二节:Winsock聊天器实例

上一节我们介绍了Winsock控件,这节我们将以一个聊天器的实例来说说如何应运Winsock控件进行计算机之间的通信。

我也做了一个聊天器,程序点击这里下载

这节课我们做了用于通信的服务端和客户端,在制作他们之前,先看看服务端和客户端是如何设计的:(注:要复制本页代码时要注意去掉不正确的字符如?号

服务端的设计:

1、设置好localPort作为侦听端口

2、使用listen使服务端处在侦听状态

3、客户端发出连接请求后触发ConnectionRequest事件

4、在ConnectionRequest中用Accept方法来接收客户端的连接请求

5、收发数据

客户端的设计:

1、设置RemoteHost,即你要连接IP

2、设置好RemotePort,即通信的端口号,要与服务端的一致

3、使用Connect方法向服务端发出连接请求

4、如果服务端同意连接请求则触发Connect事件

5、收发数据

服务端的制作:

界面如下:

服务器设计第一、二步的实现(窗体的Load事件):

Private Sub Form_Load()
        wskServer.LocalPort = 1024    ' 1、设置好localPort作为侦听端口
        wskServer.Listen      ' 2、使用listen使服务端处在侦听状态
End Sub

服务器设计第三、四步的实现(Winsock的Connect):

Private Sub wskServer_ConnectionRequest(ByVal requestID As Long)
        If wskServer.State <> sckClosed Then
                wskServer.Close     '这里要先关闭,要不会报错
                wskServer.Accept requestID      ' 4、在ConnectionRequest中用Accept方法来接收客户端的连接请求
        End If
End Sub

服务器设计第五步的实现:

Private Sub cmdSend_Click()
         wskServer.SendData txtMessage.Text     '发送数据
        txtContent.Text = vbCrLf & txtContent.Text & "我说:" & txtMessage.Text        '加到聊天记录中
        txtContent.Text=""
End Sub

Private Sub wskServer_DataArrival(ByVal bytesTotal As Long)
        Dim tempS As String
        wskServer.GetData tempS    '接收数据
        txtContent.Text = txtContent.Text & "对方说:" & tempS & vbCrLf        '加到聊天记录中
End Sub

将上面的程序生成一个EXE文件(名为:Server.exe),然后新建一个工程以制作客户端。

客户端的制作:

界面如下:

客户端设计第一、二、三步的实现:

Private Sub cmdConnect_Click()
        Dim IP As String
        IP = InputBox("请输入要连接的IP", "输入的IP", "127.0.0.1")       '连接的IP默认为本机
        wskClient.RemoteHost = IP      '1、设置RemoteHost,即你要连接IP
        wskClient.RemotePort = 1024        '2、设置好RemotePort,即通信的端口号,要与服务端的一致
        wskClient.Connect      '3、使用Connect方法向服务端发出连接请求
        cmdConnect.Enabled = False
End Sub

客户端设计第五步的实现(发送和接收代码和服务器一致,只不过控件名不同而已):

Private Sub cmdSend_Click()
         wskClient.SendData txtMessage.Text     '发送数据
        txtContent.Text = vbCrLf & txtContent.Text & "我说:" & txtMessage.Text        '加到聊天记录中
        txtContent.Text=""
End Sub

Private Sub wskClient_DataArrival(ByVal bytesTotal As Long)
        Dim tempS As String
        wskClient.GetData tempS    '接收数据
        txtContent.Text = txtContent.Text & "对方说:" & tempS & vbCrLf        '加到聊天记录中
End Sub

生成EXE文件(名为:Client.exe)。这样一个聊天器就做好了,在本机也可以试试,运行方法是先打开Server.exe,后打开Client.exe,然后在Client.exe点击连接按钮,连接地址为"127.0.0.1",确定,然后在下面的文本框输入内容点发送按钮即可。在建立连接后Server.exe的操作方法和Client.exe的操作方法一样。试试吧!

最后说一句:实际上我们会发现这样的聊天器怎么会分为两个部份呢,这样多不方便。实际上我们可以合成一个,即在一个窗体上放一个wskServer再放一个wskClient,这样就OK了,这里是为了更好的说明就放分成两个的。还有就是这个聊天器是基于TCP协议,这个协议保证了通信的数据不会丢失,这个协议只能一对一,但在实际中我们聊天的对象不会是一个人吧,这样就要用到可以一对多但不保证数据能完全到达UDP协议了,简单而言TCP用于一对一,而UDP可以运用于一对多。下一节我们将介绍用Winsock制作一个简单的Web服务器。

Copyright ?2005-2008 All rights reserved. www.17zixue8.com 版权所有    赣ICP备07501614号        完美兵团会员待遇说明    站主QQ:335759285