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