隨著Internet的蓬勃發展,網絡界面的交流使我們能夠即時收到各地所發生的各項信息。我們在使用各種Browser瀏覽各網點時,只要Server能提供Chat(閑聊)的服務項目,我們就可以通過Browser所提供的Chat程序與網絡上的其他使用者即時對談及交流心得。本篇文章通過Visual Basic 5.0所提供的WInSock control,設計一個Chat應用程序。我們通過Client及Server之間的文件傳輸,可以了解Chat程序的工作原理。
WinSock control簡介
WinSock是windows系統提供的一種網絡文件傳輸協議。以往我們使用WinSock設計程序時,必須調用系統提供的API來完成;但是在Visual Basic中調用API,因涉及參數傳遞類型,用起來并不方便。Visual Basic 5.0提供WinSock control簡化我們的設計流程。它可以利用User Datagram Protocol(UDP)或Transmission Control Protocol(TCP),來設計網絡的Client-Server程序。
TCP是一種Connection base的Protocol,在文件傳輸時會先行建立Link,通過Link 可確保文件傳輸的正確性;UDP則是一種Connectionless的Protocol,它在傳輸文件時不會確保傳輸端的文件能夠正確無誤的傳送到接收端,所以當我們使用UDP
protocol時,我們通常要自己作接收確認的工作。
UDP protocol看起來好像比較沒效率,其實不然!UDP protocol有一個好處:當文件很小,或我們要做網絡boardcast(廣播)時,會比較有效率。
所以了!當我們利用WinSock設計程序時,首先要依自己的需要,決定使用那一種protocol。本文將分別教您使用TCP及UDP Protocol來設計Chat程序。
Step 1:找出Domain name及IP address
在“我的電腦”中選擇“控制面板”。Double click“網絡”選項,選擇“標識”,您將會發覺您的計算機名稱、工作組名等信息。將它記錄起來,我們稍后會用到。
Step 2:設計TCP Server程序
在File選項中選New Project建立一個新的工程,在屏幕上會看到許多選項,如ActiveX Document.EXE、ActiveX Document.DLL、ActiveX.EXE、ActiveXControl等,選Standard.EXE。
接著在Project下選擇Property屬性選項,在General選項下將ProjectName改為TCP-Server,并將Form名稱及Caption更改為Server。在屏幕的Form上加入一個WinSock control,取名為Tcps;加入兩個TextBox control(Outtext、Intext),并在兩個TextBox前加入兩個label,分別將caption改為Outtext、Intext。
〈TextBox〉
Name
------------------------------------------------
Outtext(輸出文件)
Intext(輸入文件)
〈Label〉
Caption
----------------------------------------------------
Outtext(輸出文件)
Intext(輸入文件)
在Form_Load()中加入以下程序代碼,這個動作是設置好我們Local的傳輸端口,并到接收的狀態:
Tcps.protocol=0-scktcp protocol
Tcps.LocalPort = 1002
Tcps.Listen
雙擊Tcps,在Tcps_ConnectionRequest(ByVal requestID As Long)中加入以下程序代碼,這表示winsock接受了連接請求:
Tcps.Accept requestID
雙擊Outtext到Outtext_change(),加入以下程序代碼,當Outtext內容改變后,文件就會自動送出:
Tcps.SendData Outtext.text
在Tcps_DataArrival(ByVal bytesTotal As Long)中加入以下程序代碼,這是用來把所接收的文件顯示在Intext這個TextBox中。
Dim S As StrIng
Tcps.GetData S
InText.Text = S
這樣我們就完成了Server端的設計。
Step 3:設計TCP Client程序
在File選項中選擇New Project建立一個新的工程,在屏幕上看到許多選項,如ActiveX Document.EXE、ActiveX Document.DLL、ActiveX.EXE、ActiveX Control等。選Standard.EXE。接著在Project下,選擇Property屬性選項,在General選項下,將Project Name改為TCP-Client,并將FORM名稱及Caption更改為Client。
在屏幕的Form上加入一個WinSock control,取名為Tcpc,將protocol property設置成0-scktcp protocol,加入兩個TextBox control(Outtext、Intext),并在兩個TextBox前加入兩個Label,分別將其Caption改為Outtext、Intext。接著放入一個Button(button1)并將Caption改為Connect。
(TextBox)
Name
-----------------------------------------------------
Outtext(輸出文件)
Intext(輸入文件)
(Label)
Caption
--------------------------------------------------------
Outtext(輸出文件)
Intext(輸入文件)
〈Button〉
Name Caption
--------------------------------------------------------
Button1(執行建立session命令) Connect
在Form_Load()中加入以下程序代碼,這個動作是設置好我們Remote所要連接的傳輸端口及其網絡名稱。我們要連接的計算機網絡名稱為DAVID:
Tcpc.RemoteHost ="David"
Tcpc.RemotePort=1002
雙擊Outtext到Outtext_change()加入以下程序代碼,當Outtext內容改變后,文件會自動送出:
Tcpc.SendData Outtext.text
在Tcpc_DataArrival(ByVal bytesTotal As Long)中加入以下程序代碼,這是用來把所接收的文件顯示在Intext這個TextBox中。
Dim S As StrIng
Tcpc.GetData S
InText.Text = S
這樣就完成了Client端的設計。
Step 4:測試TCP Chat程序
分別執行Server及Client程序,這時在Client的屏幕上顯示In及Out TextBox及一個Connect Button;在Server屏幕上顯示In及Out TextBox。
我們按Client程序Connect button建立連接,連接建立成功后,我們可嘗試在Client的Outbox中輸入一些字符串:Hello nice to meet
you!我們將在Server端的Inbox看到這些字串。
接著我們在Server的Outbox也輸入一些字符串:Nice to meet you, too!
我們將在Client 端的Inbox看到這些字符串。結果證明我們成功了!