
|
網路通訊元件Winsock 網際網路的基礎通訊協定是TCP/IP,所有的網路通訊包括全球資訊網(WWW)、電子郵件、FTP甚至MSN都是以這個協定進行,可以說是網路的基礎交通規則,在VB6時代已經建立了一個工具元件稱為Winsock,可以執行TCP/IP模式的通訊,目前.NET下還沒這麼簡單好用的東西,本單元我們就來使用這個元件,設計一個最簡單的一對一即時通程式。 |
|
Winsock元件的位置 此元件不屬於新版的.NET預設的使用範圍,必須到設計表單頁面的工具箱中,對著元件部分按滑鼠右鍵,選擇『選擇項目』,出現選單後,選擇COM元件頁籤,找到Microsoft Winsock Control...項目選取後確定。工具箱會出現此元件,圖示為兩個重疊的電腦。
|
|
試試 Winsock 的威力→顯示我的IP 雙擊Winsock元件,圖示會出現於表單上,預設名稱為AxWinsock1。請雙擊表單,在Form_Load事件中寫程式: ![]() 執行程式你的電腦IP會出現於表單標題,在此Local指的是本地端電腦,相對的待會你要聯繫的遠端通訊對象就是Remote! |
|
建立通訊介面如下: ![]() 設定Winsock的通訊參數: 1. 通訊協定 Protocol = UDP → UDP全名 User Datagram Protocol 使用者資料通訊協定,這是簡單的發後不理的方式,類似無線電手機。 →另一選項是 TCP,Transfer Control Protocol,必須對方接受連線才能通訊,類似我們的電話手機。 2. LocalPort = ???? 設定本地端使用的通訊埠,號碼應大於1024,小於65536。遠端發射訊號進來時應指定這個Port接收。 3.RemoteHost = 遠端電腦的IP 4.RemotePort = 遠端電腦收訊的通訊埠 5.鎖定接聽的頻道:Form_Load程式中加入一行程式:Me.AxWinsock1.Bind(LocalPort, LocalIP) →參數一是你自己定的LocalPort,參數二是你自己的IP ![]() |
|
發送訊息的程式 ![]() 按Button1應送出訊息,因為資料傳送時必須是位元組陣列的原始資料型態,所以必須用到字串轉為位元組(Binary)資料的函數。 SendData是傳送資料的指令,傳送後將填入輸出字串的文字盒清空,讓使用者知道訊息已經傳出。 |
|
接收訊息的程式 ![]() 當遠端資料到達你的電腦時,會觸發Winsock的 DataArrival 事件,先接收位元組陣列資料,再轉為字串資料。 GetData 是收取資料的指令,TextBox2.Select是將游標移回到輸出用的文字盒,事實上遊標應該永遠在那邊。 請調整你的遠端通訊對象,RemoteIP 與 RemotePort 就可以和其他同學的程式通訊了! ![]() |
|
說明: 這個單元介紹的內容,精確的說是網路上的UDP通訊程式。這種通訊只負責對指定位置發出訊息,並不確認資料是否到達。所以即使對方程式根本不存在或沒啟動,發射端都不會自動知道,必須等到對方回訊才能確認。甚至,如果你的資料傳丟了,你也不會知道的!這種通訊形式多半用於需要快速度,但是偶爾掉一點資料無傷大雅的地方,譬如網路廣播電台或視訊等等。 在網路上多數的時候,資料必須非常精確,譬如一個Word檔案如果錯一點點,可能格式就不對,而變得無法開啟了! 此時必須確認所有資料封包都正確傳到,如果沒傳好必須重傳,這種通訊方式稱為 TCP,程式寫作程序較複雜,下學期再教囉! |