VS2015套接字程式設計斷開套接字連線

2021-09-19 16:02:31 字數 1045 閱讀 1496

當服務端和客戶端結束了傳送接收資料之後,兩端連線的套接字就可以斷開了。斷開已連線的套接字主要分為三個步驟:首先關閉套接字的傳送和接收資料功能,接下來關閉套接字,最後釋放winsock動態庫資源。

通過shutdown()函式關閉套接字的傳送和接收資料的功能。該函式的格式為

int shutdown(

socket s

, int how

);

其中,引數s表示要關閉功能的套接字;how表示關閉套接字的哪項功能,sd_receive表示套接字傳送資料的功能,sd_send表示套接字接收資料的功能,sd_both表示傳送和接收資料的功能。如果成功執行了shutdown()函式,則該函式的返回值是0,否則返回值是socket_error。

通過closesocket()函式關閉套接字。該函式的格式為

int closesocket( in socket s );
其中,引數s是要關閉的套接字。如果成功執行了closesocket()函式,則該函式的返回值是0,否則返回值是socket_error。當成功呼叫了closesocket()函式後,關閉的套接字就不能再使用了,所以就不能通過關閉後的套接字呼叫winsock函式了。

在使用winsock函式時,呼叫了wsastartup()函式初始化了winsock動態庫,因此在程式退出之前,需要釋放winsock動態庫。通過wsacleanup()函式實現winsock動態庫的釋放。該函式的格式為

int wsacleanup( );
如果成功執行了wsacleanup()函式,則該函式的返回值是0,否則返回值是socket_error。

客戶端通過以下**斷開已連線套接字。

int iresult = shutdown(clientsocket, sd_both);

if (iresult == socket_error)

其中,clientsocket是客戶端上已經與服務端連線的套接字。服務端也可以使用相同的方法斷開與客戶端連線的套接字。

18 3 3 套接字位址

每個套接字域都有獨特的位址格式。對於乙個 af unix 套接字來說,它的位址是由乙個包含在 sys un.h 標頭檔案裡的 sockaddr un 結構描述的。該結構的定義為 struct sockaddr un 因為不同型別的位址都需要傳遞到對套接字程序處理的系統呼叫裡去,所以定義各種位址格式時...

socket程式設計(一) 套接字

socket程式設計 一 套接字 1.套接字基礎 套接字是一種網路api 應用程式程式設計介面 可以使應用它開發網路程式。套接字介面提供一種程序間通訊的方法,使得在相同或不同的主機上的程序能以相同的規範進行雙向資訊傳送。程序通過呼叫套接字介面來實現相互之間的通訊,而套接字介面又利用下層的網路協議功能...

網路程式設計7 套接字關閉

close 函式 int close int sockfd close函式會對套接字引用計數減一,一旦發現套接字引用計數到0,就會關閉tcp兩個方向的資料流,並徹底釋放套接字 在輸入方向上,系統核心會將套接字設定為不可讀,任何讀操作都會返回異常 在輸出方向上,系統核心嘗試將傳送緩衝區的資料傳送給對端...