Socket 多執行緒

2021-06-22 07:48:57 字數 1873 閱讀 6816

服務端

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

#include void sendfuction(socket &sockconn) }

void recvfunction(socket& sockclient)

}void main()

if ( lobyte( wsadata.wversion ) != 1 ||

hibyte( wsadata.wversion ) != 1 )

socket socksrv=socket(af_inet,sock_stream,0);

sockaddr_in addrsrv;

addrsrv.sin_addr.s_un.s_addr=htonl(inaddr_any);

addrsrv.sin_family=af_inet;

addrsrv.sin_port=htons(6000);

bind(socksrv,(sockaddr*)&addrsrv,sizeof(sockaddr));

//3:將套接字設定為監聽模式等待連線請求(listen());

listen(socksrv,5);

//4:請求到來後,接受連線請求,返回乙個新的對應於此次連線的套接字(accept());

sockaddr_in addrclient;

int len=sizeof(sockaddr);

while(1)

}

客戶端

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

#include void sendfuction(socket &sockconn)

}void recvfunction(socket& sockclient) }

void main()

if ( lobyte( wsadata.wversion ) != 1 ||

hibyte( wsadata.wversion ) != 1 )

socket sockclient=socket(af_inet,sock_stream,0);

//2:向伺服器發出連線請求(connect());

sockaddr_in addrsrv;

addrsrv.sin_addr.s_un.s_addr=inet_addr("127.0.0.1");

addrsrv.sin_family=af_inet;

addrsrv.sin_port=htons(6000);

connect(sockclient,(sockaddr*)&addrsrv,sizeof(sockaddr));

//3:和伺服器端進行通訊(send()/recv());

send(sockclient,"hello",strlen("hello")+1,0);

char recvbuf[50];

recv(sockclient,recvbuf,50,0);

printf("%s\n",recvbuf);

std::thread sendthread(sendfuction,sockclient);

sendthread.detach();

std::thread recvthread(recvfunction,sockclient);

recvthread.detach();

//4:關閉套接字,關閉載入的套接字型檔(closesocket()/wsacleanup())。

//closesocket(sockclient);

//wsacleanup();

while (true)

}

socket多執行緒通訊

程序與執行緒的區別 程序 在作業系統構成單獨執行流的單位。執行緒 在程序構成單獨執行流的單位 執行緒的建立和執行流程 include int pthread create pthread t restrict thread,const pthread attr t restrict attr,voi...

多執行緒socket通訊client

控制台下實現多執行緒socket通訊,服務端為每個請求的客戶端建立乙個執行緒,進行通訊。其實這些msdn裡都有 一.基本流程如下 定義變數 獲得winsock版本 載入winsock庫 初始化 建立套接字 設定套接字選項 關閉套接字 解除安裝winsock庫 釋放資源 二.客戶端 建立過程 下篇是服...

多執行緒和socket介紹

程序和執行緒 乙個程序至少有乙個執行緒,同乙個程序中的多個執行緒可以併發執行。所謂的併發只是不停的切換,只是電腦切換的太快了,人我們的大腦感覺到是在併發執行。執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標,程式計數器等 但 區是共享的,即不同的執行緒可以執行同樣的函式。多執行緒是...