在建立了socket例項後,我們就可以通過乙個遠端主機的終結點和它取得連線,運用的方法就是connect()方法:
public connect (endpoint ep);
該方法只可以被運用在客戶端。進行連線後,我們可以運用套接字的connected屬性來驗證連線是否成功。如果返回的值為true,則表示連線成功,否則就是失敗。下面的**就顯示了如何建立socket例項並通過終結點與之取得連線的過程:
一旦連線成功,我們就可以運用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...