伺服器端:伺服器端主要完成開啟對埠的偵聽,這就像為計算機開啟了乙個"門",所有向這個「門」傳送的請求都會被系統接收。在c#中可以通過以下步驟完成。
1)首先使用本機ip位址和埠號建立乙個sockets.tcplistener型別的例項,
2) 然後在該例項上呼叫start()方法。從而開啟對指定埠的偵聽。
服務端對埠進行偵聽
**如下:
class serverclient
static void main(string args)
console.writeline("server is running....");
ipaddress ip=new ipadress(new byte ); //本機計算機的ip位址。
tcplistener listener=new tcplistener(ip,8500);
listener.start(); //開始監聽
console.writeline("start listening.......");
console.writeline("\n\n輸入\"q\"鍵退出。);
dokey=console.readkey(true).key;
}while(key!=consolekey.q);
獲取ipadderss的另外幾種常用方法:
ipaddress ip=ipaddress.parse("192.168.0.100");
ipaddress ip=dns.gethostentry(dns.gethostname()).addresslist[0];
客戶端與服務端連線
1.單一客戶端與伺服器端連線
服務端開始對埠偵聽以後,便可以建立客戶端與其連線。這一步是通過在客戶端建立乙個tcpclient的型別例項完成的,每建立乙個新的tcpclient便相當於建立乙個新的套接字socket與服務端通訊。tcpclient類不過世對socket進行了乙個包裝。在建立tcpclient型別例項時,可以指定遠端伺服器的位址和埠號。這樣在建立的同時,就會像遠端服務端傳送連線請求,一旦成功,則兩者間的連線就建立起來了。也可以使用過載的無引數建構函式建立物件,然後再呼叫connect()方法,在connect方法中傳入遠端伺服器位址和埠號來與伺服器建立連線。
需要注意的是不管事使用引數的建構函式與伺服器連線,還是通過connect()方法與伺服器建立連線,都是同步方法(或者說是阻塞的)。也就是說:客戶端與伺服器端連線成功,方法返回,或者服務端不存在之前,無法繼續後續的操作。這裡先討論同步的,後面再看非同步的
class client
static void main(string args)
console.writeline("client is running");
tcpclient client=new tcpclient();
trycatch(exception ex)--> server:",client.client.localendpont,client.client.remoteendpoint);
2.多個客戶端與服務端連線
多個客戶端與服務端連線**大體相同,只不過需要建立多個tcpclient而已。此處就不上**。
Linux網路程式設計(二) 基本TCP套接字程式設計
為了執行網路io,乙個程序必須先呼叫socket函式,指定期望通訊的協議型別 1 include2 int socket int family,int type,int protocol 3 返回 成功返回非負描述符,若出錯返回 1family引數的值 af inet ipv4協議 af inet6...
網路程式設計 基本函式
位元組排序函式 include 返回網路位元組序的值 uint16 t htons uint16 t host16bitvalue uint32 t htonl uint32 t host32bitvalue 返回主機位元組序的值 uint16 t ntohs uint16 t net16bitva...
udp基本網路程式設計
udp傳輸資料不需要像tcp一樣建立連線,只需要知道客戶端和伺服器的ip位址即可。首先是伺服器端,初始化套接字結構位址,建立套接字,繫結埠,迴圈監聽。include include 基本標頭檔案 include socket include struct sockaddr in include st...