三、开发步骤 P2P软件模拟 P2P(Perl To Perl)的意思是点对点,这种软件与传统的C/S结构的软件有一个很大的区别,就是通信的双方地位是对等的,双方都既是服务器又是客户机。它使用的协议还是TCP/IP协议,也有客户机服务器,只是双方都既有服务器模块来响应对方的请求,又有客户机模块来给对方发送请求。
现在P2P软件非常流行。尤其是资源共享类型的下载软件,你可以下载任何一台主机的文件,同时你也当作主机给任何一台联网的机子提供下载。 其实,我们自己就可以做一个P2P的软件。 1、 新建工程,在部件中勾选Microsoft WinSocket Control 6.0控件。 2、 在主窗体的添加两个WinSocket控件。分别命名为tcpClient和tcpServer,分别用来作为客户机的服务器模块。 3、 布局界面,用来实现点对点的聊天 4、 服务器模块关键代码: ============================================ Private Sub Command3_Click() ‘激活服务器,进入监听状态 tcpServer.Protocol = sckTCPProtocol tcpServer.LocalPort = CInt(myserverPort.Text) '将 LocalPort 属性设置为一个整数。 tcpServer.Listen '然后调用 Listen 方法。 If tcpServer.State = sckListening Then Command3.Enabled = False Else MsgBox "服务器启动失败,请检查端口是否空闲!" End If End Sub ============================================= Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long) ‘收到连接请求,关闭监听,接受请求,从而与请求的客户机建立连接 If tcpServer.State <> sckClosed Then tcpServer.Close ' tcpServer.Accept requestID End Sub ============================================== Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long) ‘收到客户端数据,进行相应处理 tcpServer.GetData s, vbString, 100 board.Text = s & vbCrLf & board.Text End Sub ============================================== Private Sub Command4_Click() ‘关闭服务器 tcpServer.Close Command3.Enabled = True End Sub ***************************************************************** 5、 客户机模块关键代码 Private Sub Command1_Click() ‘与服务器建立连接 On Error GoTo errShow If Len(serverIP.Text) = 0 Or Len(serverPort.Text) = 0 Then MsgBox ("请输入主机名或主机IP地址。") Exit Sub Else tcpClient.RemoteHost = serverIP.Text tcpClient.RemotePort = serverPort.Text End If tcpClient.Connect Command1.Enabled = False Exit Sub errShow: MsgBox "连接失败,请查看对方服务器是否启动" tcpClient.Close End Sub ================================================= ‘向服务器发送数据 tcpClient.SendData (myName.Text & "(" & myIP.Text & ")对你说:" & message.Text) ================================================= ‘关闭与服务器的连接 tcpClient.Close