資源簡介
c++網絡編程之服務端,我的下載中還有對應的客戶端例子,兩者配合使用實現進程間通信
代碼片段和文件信息
#include??//windows?socket的頭文件
#include?
#include?
#include?
#include?
#include?
#pragma?comment(lib?“ws2_32.lib“)?//連接winsock2.h的靜態庫文件
using?namespace?std;
mutex?m;
//定義結構體用來設置
typedef?struct?my_file
{
SOCKET?clientSocket;?//文件內部包含了一個SOCKET?用于和客戶端進行通信
sockaddr_in?clientAddr;?//用于保存客戶端的socket地址
int?id;?//文件塊的序號
}F;
DWORD?WINAPI?transmmit(const?LPVOID?arg)
{
//實際上這里為了追求并發性不應該加鎖,上鎖是為了方便看輸出
m.lock();
F?*temp?=?(F*)arg;
//獲取文件的序號
//int?file_id?=?temp->id;
//獲取客戶機的端口號
//ntohs(temp?->?clientAddr.sin_port);?
cout?<“測試開始等待客戶端發送消息...“?< //從客戶端處接受數據
char?Buffer[MAXBYTE]?=?{?0?};?//緩沖區
recv(temp->clientSocket?Buffer?MAXBYTE?0);?//recv方法?從客戶端通過clientScocket接收
cout?<“線程“?<id?<“從客戶端的“?<clientAddr.sin_port)?<“號端口收到:“?<
//發送簡單的字符串到客戶端
const?char*?s?=?“Server?file“;
send(temp->clientSocket?s?strlen(s)?*?sizeof(char)?+?1?NULL);
cout?<“線程“?<id?<“通過客戶端的“?<clientAddr.sin_port)?<“號端口發送:“?<
m.unlock();
return?0;
}
int?main()
{
WSADATA?wsaData;
//第一個參數是winsocket?load的版本號(2.2)
WSAStartup(MAKEWORD(2?3
評論
共有 條評論