用VB實(shí)現(xiàn)客戶(hù)——服務(wù)器(TCP/IP)編程實(shí)例 — 編程愛(ài)好者 programfan.c...
現(xiàn)在大多數(shù)語(yǔ)言都支持客戶(hù)-服務(wù)器模式編程,其中VB給我們提供了很好的客戶(hù)-服務(wù)器編程方式。下面我們用VB來(lái)實(shí)現(xiàn)TCP/IP網(wǎng)絡(luò)編程。
TCP/IP協(xié)議是Internet最重要的協(xié)議。VB提供了WinSock控件,用于在TCP/IP的基礎(chǔ)上進(jìn)行網(wǎng)絡(luò)通信。當(dāng)兩個(gè)應(yīng)用程序使用Socket進(jìn)行網(wǎng)絡(luò)通信時(shí),其中一個(gè)必須創(chuàng)建Socket服務(wù)器偵聽(tīng),而另一個(gè)必須創(chuàng)建Socket客戶(hù)去連接服務(wù)器。這樣兩個(gè)程序就可以進(jìn)行通信了。
1.創(chuàng)建服務(wù)器,首先創(chuàng)建一個(gè)服務(wù)端口號(hào)。并開(kāi)始偵聽(tīng)是否有客戶(hù)請(qǐng)求連接。
建立一窗體,并向其增加一個(gè)Winsock控件(可在工程菜單中的部件項(xiàng)來(lái)添加此控件)
添加兩文本框Text1,Text2,和一按鈕Command1
Private Sub Form_Load()
SockServer.LocalPort = 2000 ′服務(wù)器端口號(hào),最好大于1000
SockServer.Listen ′開(kāi)始偵聽(tīng)
End Sub
Private Sub Form_Unload(Cancel As Integer)
SockServer.Close
End Sub
Private Sub SockServer_Close()
SockServer.Close
End Sub
Private Sub SockServer_ConnectionRequest(ByVal requestID As Long)
SockServer.Close
SockServer.Accept requestID ′表示客戶(hù)請(qǐng)求連接的ID號(hào)
End Sub
′當(dāng)客戶(hù)向服務(wù)器發(fā)送數(shù)據(jù)到達(dá)后,產(chǎn)生DataArrival事件,在事件中接收數(shù)據(jù),GetData方法接收數(shù)據(jù)。
Private Sub SockServer_Data
Arrival(ByVal bytesTotal As Long)
Dim s As String
SockServer.GetData s
Text1.Text = s
End Sub
當(dāng)我需要向客戶(hù)發(fā)送數(shù)據(jù)時(shí),只需調(diào)用SendData方法。
Private Sub Command1_Click()
SockServer .SendData Text2.Text
End Sub
2.創(chuàng)建客戶(hù)。要?jiǎng)?chuàng)建客戶(hù)連接服務(wù)器,首先設(shè)置服務(wù)器主機(jī)名,如IP地址、域名或計(jì)算機(jī)名,然后設(shè)置服務(wù)器端口,最后連接服務(wù)器。
建立一窗體,并向其增加一個(gè)Winsock控件(可在工程菜單中的部件項(xiàng)來(lái)添加此控件),取名為:SockC1。添加兩文本框Text1,Text2,和一按鈕Command1
Private Sub Form_Load()
SockCl.RemoteHost =′127.0.0.1″
′表示服務(wù)器主機(jī)名
SockCl.RemotePort = 2000
′表示服務(wù)器端口名
SockCl.Connect
′連接到服務(wù)器
End Sub
Private Sub Form_Unload(Cancel As Integer)
SockCl.Close
End Sub
Private Sub SockCl_Close()
SockCl.Close
End Sub
Private Sub SockCl_DataArrival(ByVal bytesTotal As Long)
Dim s As String
SockCl.GetData s ′接收數(shù)據(jù)到文本框中
Text1.Text = s
End Sub
Private Sub Command1_Click()
SockCl.SendData Text2.Text ′向服務(wù)器發(fā)送數(shù)據(jù)
End Sub
3.進(jìn)行通信。把這兩個(gè)窗體分別編譯成兩個(gè)EXE文件,服務(wù)器Server.exe和客戶(hù)Client.exe程序,并把它們分別安裝在服務(wù)器端和客戶(hù)端,這樣就可以實(shí)現(xiàn)兩者通信了。
(河北 郝一霜)
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。