C 網路程式設計概述 二

2022-05-10 02:13:31 字數 2185 閱讀 7510

在建立了socket例項後,我們就可以通過乙個遠端主機的終結點和它取得連線,運用的方法就是connect()方法:

public connect (endpoint ep);

該方法只可以被運用在客戶端。進行連線後,我們可以運用套接字的connected屬性來驗證連線是否成功。如果返回的值為true,則表示連線成功,否則就是失敗。下面的**就顯示了如何建立socket例項並通過終結點與之取得連線的過程:

iphostentry iphost = dns.resolve("");

string aliases = iphost.aliases;

ipaddress addr = iphost.addresslist;

endpoint ep = new ipendpoint(addr[0],80);

socket sock = new socket(addressfamily.internetwork,sockettype.stream,protocoltype.tcp);

sock.connect(ep);

if(sock.connected)

console.writeline("ok");

一旦連線成功,我們就可以運用send()和receive()方法來進行通訊。

send()方法的函式原型如下:

public int send (byte buffer, int size, socketflags flags);

其中,引數buffer包含了要傳送的資料,引數size表示要傳送資料的大小,而引數flags則可以是以下一些值:socketflags.none、socketflags.dontroute、socketflags.outofbnd。

該方法返回的是乙個system.int32型別的值,它表明了已傳送資料的大小。同時,該方法還有以下幾種已被過載了的函式實現:

public int send (byte buffer);

public int send (byte buffer, socketflags flags);

public int send (byte buffer,int offset, int size, socketflags flags);

介紹完send()方法,下面是receive()方法,其函式原型如下:

public int receive(byte buffer, int size, socketflags flags);

其中的引數和send()方法的引數類似,在這裡就不再贅述。

同樣,該方法還有以下一些已被過載了的函式實現:

public int receive (byte buffer);

public int receive (byte buffer, socketflags flags);

public int receive (byte buffer,int offset, int size, socketflags flags);

在通訊完成後,我們就通過shutdown()方法來禁用socket,函式原型如下:

public void shutdown(socketshutdown how);

其中的引數how表明了禁用的型別,soketshutdown.send表明關閉用於傳送的套接字;soketshutdown.receive表明關閉用於接收的套接字;而soketshutdown.both則表明傳送和接收的套接字同時被關閉。

應該注意的是在呼叫close()方法以前必須呼叫shutdown()方法以確保在socket關閉之前已傳送或接收所有掛起的資料。一旦shutdown()呼叫完畢,就呼叫close()方法來關閉socket,其函式原型如下:

public void close();

該方法強制關閉乙個socket連線並釋放所有託管資源和非託管資源。該方法在內部其實是呼叫了方法dispose(),該函式是受保護型別的,其函式原型如下:

protected virtual void dispose(bool disposing);

其中,引數disposing為true或是false,如果為true,則同時釋放託管資源和非託管資源;如果為false,則僅釋放非託管資源。因為close()方法呼叫dispose()方法時的引數是true,所以它釋放了所有託管資源和非託管資源。

這樣,乙個socket從建立到連線到通訊最後的關閉的過程就完成了。雖然整個過程比較複雜,但相對以前在sdk或是其他環境下進行socket程式設計,這個過程就顯得相當輕鬆了。

C 網路程式設計概述 二

在建立了socket例項後,我們就可以通過乙個遠端主機的終結點和它取得連線,運用的方法就是connect 方法 public connect endpoint ep 該方法只可以被運用在客戶端。進行連線後,我們可以運用套接字的connected屬性來驗證連線是否成功。如果返回的值為true,則表示連...

C 網路程式設計概述 二

在建立了socket例項後,我們就可以通過乙個遠端主機的終結點和它取得連線,運用的方法就是connect 方法 public connect endpoint ep 該方法只可以被運用在客戶端。進行連線後,我們可以運用套接字的connected屬性來驗證連線是否成功。如果返回的值為true,則表示連...

C 網路程式設計概述 三

源 如下 其中主要的函式為dosocketget using system using system.drawing using system.collections using system.componentmodel using system.windows.forms using syste...