VS2015中基於TCP客戶端的實現

2021-09-11 23:13:55 字數 1392 閱讀 8209

在《vs2015中基於tcp服務端的實現》中實現了基於tcp的服務端。服務端通過呼叫listen()函式將套接字設定為監聽模式,並且呼叫accept()函式等待客戶端的連線。在基於tcp的客戶端中,主要的流程包括建立客戶端套接字和連線服務端兩個步驟。

通過socket()函式建立用於客戶端的套接字。socket()函式的用法請參考《vs2015中基於tcp服務端的實現》。

客戶端通過呼叫connect()函式,連線處於監聽狀態的服務端套接字。

該函式的格式為

int wsaapi connect(

socket s

, const sockaddr *name

, int namelen

);

sockaddr_in serveraddr;

serveraddr.sin_family = af_inet;

serveraddr.sin_port = htons(5150);

serveraddr.sin_addr.s_addr = inet_addr("192.168.1.11");

其中,變數serveraddr是sockaddr_in結構的變數,用於儲存服務端的資訊。5150是在《vs2015中基於tcp服務端的實現》中提到的服務端監聽的埠。192.168.1.11是服務端ip位址,使用inet_addr()函式將字串格式的ip位址轉換為二進位制格式的ip位址。在vs2015中,inet_addr()函式已經被inet_pton()函式所替。inet_addr()函式的使用方法請參見《vs2015中ip位址轉換函式》。在vs2015中使用inet_addr()函式時,程式在編譯時會報錯,解決方法請參考《vs2015套接字程式設計中_winsock_deprecated_no_warnings的解決方法》。

int iresult = connect(clientsocket, (sockaddr*)&serveraddr, sizeof(serveraddr));

if (iresult == socket_error)

printf("連線服務端成功!\n");

在配置了服務端資訊之後,呼叫connect()函式連線服務端。其中,clientsocket是在「1 建立客戶端套接字」中建立的客戶端套接字;serveraddr是在「2.2.1 配置服務端位址資訊」中配置的服務端資訊。如果連線服務端失敗,則呼叫closesocket()函式關閉套接字;如果連線服務端成功,則顯示成功的資訊。

#include #include #pragma comment(lib,"ws2_32.lib")

int main()

printf("連線服務端成功!\n");

return 0;

}

TCP通訊(客戶端)

修改自網路 include include include pragma comment lib,ws2 32.lib int client void unsigned short port int main int argc,char argv int client void if isockcl...

winsock實現基於TCP的客戶端 伺服器通訊

一 伺服器端程式 include include pragma comment lib,ws2 32.lib 或者在專案屬性的聯結器的輸入的附加依賴項中新增ws2 32.lib define port 5000 void main slisten socket af inet,sock stream...

基於TCP 實現客戶端之間通訊 1

前段時間學習了基於tcp協議下實現伺服器與乙個客戶端的通訊,伺服器與多個客戶端之間的通訊,以及客戶端之間的互相通訊。下面就是我寫的利用tcp和多執行緒技術實現客戶端之間互相通訊的 伺服器端 tcpserverb.c include include include include include in...