?? 用winsock設(shè)計(jì)chat程序.txt
字號:
用WinSock設(shè)計(jì)Chat程序(轉(zhuǎn))
--------------------------------------------------------------------------------
【天啦】 于 2000-08-02 11:25:02 加貼在 Joy ASP ↑:
摘要
隨著Internet的蓬勃發(fā)展,網(wǎng)絡(luò)界面的交流使我們能夠即時(shí)收到各地所發(fā)生的各項(xiàng)信息。我們在使用各種Browser瀏覽各網(wǎng)點(diǎn)時(shí),只要Server能提供Chat(閑聊)的服務(wù)項(xiàng)目,我們就可以通過Browser所提供的Chat程序與網(wǎng)絡(luò)上的其他使用者即時(shí)對談及交流心得。本篇文章通過Visual Basic 5.0所提供的WInSock control,設(shè)計(jì)一個(gè)Chat應(yīng)用程序。我們通過Client及Server之間的文件傳輸,可以了解Chat程序的工作原理。
WinSock control簡介
WinSock是windows系統(tǒng)提供的一種網(wǎng)絡(luò)文件傳輸協(xié)議。以往我們使用WinSock設(shè)計(jì)程序時(shí),必須調(diào)用系統(tǒng)提供的API來完成;但是在Visual Basic中調(diào)用API,因涉及參數(shù)傳遞類型,用起來并不方便。Visual Basic 5.0提供WinSock control簡化我們的設(shè)計(jì)流程。它可以利用User Datagram Protocol(UDP)或Transmission Control Protocol(TCP),來設(shè)計(jì)網(wǎng)絡(luò)的Client-Server程序。
TCP是一種Connection base的Protocol,在文件傳輸時(shí)會先行建立Link,通過Link 可確保文件傳輸?shù)恼_性;UDP則是一種Connectionless的Protocol,它在傳輸文件時(shí)不會確保傳輸端的文件能夠正確無誤的傳送到接收端,所以當(dāng)我們使用UDP
protocol時(shí),我們通常要自己作接收確認(rèn)的工作。
UDP protocol看起來好像比較沒效率,其實(shí)不然!UDP protocol有一個(gè)好處:當(dāng)文件很小,或我們要做網(wǎng)絡(luò)boardcast(廣播)時(shí),會比較有效率。
所以了!當(dāng)我們利用WinSock設(shè)計(jì)程序時(shí),首先要依自己的需要,決定使用那一種protocol。本文將分別教您使用TCP及UDP Protocol來設(shè)計(jì)Chat程序。
Step 1:找出Domain name及IP address
在“我的電腦”中選擇“控制面板”。Double click“網(wǎng)絡(luò)”選項(xiàng),選擇“標(biāo)識”,您將會發(fā)覺您的計(jì)算機(jī)名稱、工作組名等信息。將它記錄起來,我們稍后會用到。
Step 2:設(shè)計(jì)TCP Server程序
在File選項(xiàng)中選New Project建立一個(gè)新的工程,在屏幕上會看到許多選項(xiàng),如ActiveX Document.EXE、ActiveX Document.DLL、ActiveX.EXE、ActiveXControl等,選Standard.EXE。
接著在Project下選擇Property屬性選項(xiàng),在General選項(xiàng)下將ProjectName改為TCP-Server,并將Form名稱及Caption更改為Server。在屏幕的Form上加入一個(gè)WinSock control,取名為Tcps;加入兩個(gè)TextBox control(Outtext、Intext),并在兩個(gè)TextBox前加入兩個(gè)label,分別將caption改為Outtext、Intext。
〈TextBox〉
Name
------------------------------------------------
Outtext(輸出文件)
Intext(輸入文件)
〈Label〉
Caption
----------------------------------------------------
Outtext(輸出文件)
Intext(輸入文件)
在Form_Load()中加入以下程序代碼,這個(gè)動作是設(shè)置好我們Local的傳輸端口,并到接收的狀態(tài):
Tcps.protocol=0-scktcp protocol
Tcps.LocalPort = 1002
Tcps.Listen
雙擊Tcps,在Tcps_ConnectionRequest(ByVal requestID As Long)中加入以下程序代碼,這表示winsock接受了連接請求:
Tcps.Accept requestID
雙擊Outtext到Outtext_change(),加入以下程序代碼,當(dāng)Outtext內(nèi)容改變后,文件就會自動送出:
Tcps.SendData Outtext.text
在Tcps_DataArrival(ByVal bytesTotal As Long)中加入以下程序代碼,這是用來把所接收的文件顯示在Intext這個(gè)TextBox中。
Dim S As StrIng
Tcps.GetData S
InText.Text = S
這樣我們就完成了Server端的設(shè)計(jì)。
Step 3:設(shè)計(jì)TCP Client程序
在File選項(xiàng)中選擇New Project建立一個(gè)新的工程,在屏幕上看到許多選項(xiàng),如ActiveX Document.EXE、ActiveX Document.DLL、ActiveX.EXE、ActiveX Control等。選Standard.EXE。接著在Project下,選擇Property屬性選項(xiàng),在General選項(xiàng)下,將Project Name改為TCP-Client,并將FORM名稱及Caption更改為Client。
在屏幕的Form上加入一個(gè)WinSock control,取名為Tcpc,將protocol property設(shè)置成0-scktcp protocol,加入兩個(gè)TextBox control(Outtext、Intext),并在兩個(gè)TextBox前加入兩個(gè)Label,分別將其Caption改為Outtext、Intext。接著放入一個(gè)Button(button1)并將Caption改為Connect。
(TextBox)
Name
-----------------------------------------------------
Outtext(輸出文件)
Intext(輸入文件)
(Label)
Caption
--------------------------------------------------------
Outtext(輸出文件)
Intext(輸入文件)
〈Button〉
Name Caption
--------------------------------------------------------
Button1(執(zhí)行建立session命令) Connect
在Form_Load()中加入以下程序代碼,這個(gè)動作是設(shè)置好我們Remote所要連接的傳輸端口及其網(wǎng)絡(luò)名稱。我們要連接的計(jì)算機(jī)網(wǎng)絡(luò)名稱為DAVID:
Tcpc.RemoteHost ="David"
Tcpc.RemotePort=1002
雙擊Outtext到Outtext_change()加入以下程序代碼,當(dāng)Outtext內(nèi)容改變后,文件會自動送出:
Tcpc.SendData Outtext.text
在Tcpc_DataArrival(ByVal bytesTotal As Long)中加入以下程序代碼,這是用來把所接收的文件顯示在Intext這個(gè)TextBox中。
Dim S As StrIng
Tcpc.GetData S
InText.Text = S
這樣就完成了Client端的設(shè)計(jì)。
Step 4:測試TCP Chat程序
分別執(zhí)行Server及Client程序,這時(shí)在Client的屏幕上顯示In及Out TextBox及一個(gè)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看到這些字符串。結(jié)果證明我們成功了!
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -