網際網路通過 ip 定位電腦。
在電腦中通過 port 來定位程式。
常用埠:21ftp, 25smtp, 110pop3, 80http, 443https
程式之間通過 協議 定義通訊資料的格式。
網絡卡接受到資料以後,根據埠號,把資料傳送給不同的程式。
是一種通訊機制,用於描述ip位址和port,是乙個通訊鏈的控制代碼。用於兩個程式的通訊。
socket類似打**。**通訊的雙方相當於相互通訊的2個程式,**號碼是ip。使用者通話前,首先要占有一部**(socket),同時要知道對方的號碼(對方有乙個固定的socket),然後撥號(發出連線請求)。對方假如在場並空閒,拿起**筒,雙方就可以通話(連線成功)。雙方通話的過程,相當於一方向socket傳送資料,一方從socket接收資料。通話結束後,一方掛起**,相當於關閉socket,撤銷連線,
流式socket(stream):是一種面向連線的socket,tcp協議用stream socket,安全,效率低。
browser和server之間使用的tcp協議(流式socket)
資料報socket(datagram):無連線的socket,udp使用報式socket,不安全(丟失,順序混亂,在接收端要分析重排序,要求重發等),效率高。
建立乙個winform程式
//伺服器段 監聽socket
socket slisten = null;
private void btnlisten_click(object sender, eventargs e)
程式執行起來以後,accept方法阻塞了當前執行緒,視窗不能再拖動。用browser進行測試,比如程式監聽127.0.0.1:11111, 在瀏覽器輸入這個ip:port. 這時候accept方法返回了,視窗又可以拖動了。建立乙個執行緒來監聽。
//伺服器段 監聽socket
socket slisten = null;
//監聽執行緒
thread threadlisten = null;
private void btnlisten_click(object sender, eventargs e)
private void listenconnection()
public partial class form1 : form
//伺服器段 監聽socket
socket slisten = null;
//監聽執行緒
thread threadlisten = null;
private void btnlisten_click(object sender, eventargs e)
private void listenconnection()
private void showmsg(string str)
}
winform程式:
public partial class form1 : form
socket socclient = null;
private void btnconnectserver_click(object sender, eventargs e)
}
測試:先執行伺服器端,start listen,然後客戶端project右鍵,debug,start new instance。連線server。server端:
private void listenconnection()
client端:private void btnsendmsg_click(object sender, eventargs e)
上面的程式,server端只receive一次client端send來的訊息。server端:建立乙個通訊線程,專門負責接受client發來的msg
private void listenconnection()
bool isreceive = true;
private void receivemsg(object obj)
}
在server端 : form中加乙個listbox顯示連線上的client的ip和port。
dictionarydictcon = new dictionary();private void listenconnection()
在server端 :
private void btnsendmsg_click(object sender, eventargs e)}}
在client端:接受伺服器發來的msgthread threadmsg = null;
private void btnconnectserver_click(object sender, eventargs e)
bool isreceive = true;
private void receivemsg()
}
server端的監聽socket需要binding 乙個 endpoint(ip+port)。通訊socket不需要bind。在server端修改listenconnection方法:
dictionarydictcon = new dictionary();
bool iswatch = true;
private void listenconnection()
}
server端: C 網路程式設計
首先我們解釋一下在網路程式設計時候,經常遇到的幾個概念 同步 synchronous 非同步 asynchronous 阻塞 block 和非阻塞 unblock 所謂同步方式,就是傳送方傳送資料報以後,不等接受方響應,就接著傳送下乙個資料報。非同步方式就是當傳送方傳送乙個資料報以後,一直等到接受方...
C 網路程式設計
1 ip網路中的每台主機都有乙個ip位址 它是邏輯位址 網際網路上的ip位址具有全球唯一性 4個位元組,192.168.0.16 2 osi將網路分為 tcp ip模型 應用層 應用層 表示層會話層 傳輸層 傳輸層 網路層 網路層 資料鏈路層 網路介面 物理層相同層次之間不可以直接通訊,是虛擬通訊。...
c 網路程式設計
microsoft.framework為應用程式訪問inter 提供了分層的 可擴充套件的以及受管轄的網路服務,其名字空間system.和system.sockets包含豐富的類可以開發多種網路應用程式。類採用的分層結構允許應用程式在不同的控制級別上訪問網路,開發人員可以根據需要選擇針對不同的級別編...