-
大小: 3KB文件類(lèi)型: .cpp金幣: 1下載: 0 次發(fā)布日期: 2021-05-09
- 語(yǔ)言: C/C++
- 標(biāo)簽: c++網(wǎng)絡(luò)編??
資源簡(jiǎn)介
c++網(wǎng)絡(luò)編程之服務(wù)端,我的下載中還有對(duì)應(yīng)的客戶(hù)端例子,兩者配合使用實(shí)現(xiàn)進(jìn)程間通信
代碼片段和文件信息
#include??//windows?socket的頭文件
#include?
#include?
#include?
#include?
#include?
#pragma?comment(lib?“ws2_32.lib“)?//連接winsock2.h的靜態(tài)庫(kù)文件
using?namespace?std;
mutex?m;
//定義結(jié)構(gòu)體用來(lái)設(shè)置
typedef?struct?my_file
{
SOCKET?clientSocket;?//文件內(nèi)部包含了一個(gè)SOCKET?用于和客戶(hù)端進(jìn)行通信
sockaddr_in?clientAddr;?//用于保存客戶(hù)端的socket地址
int?id;?//文件塊的序號(hào)
}F;
DWORD?WINAPI?transmmit(const?LPVOID?arg)
{
//實(shí)際上這里為了追求并發(fā)性不應(yīng)該加鎖,上鎖是為了方便看輸出
m.lock();
F?*temp?=?(F*)arg;
//獲取文件的序號(hào)
//int?file_id?=?temp->id;
//獲取客戶(hù)機(jī)的端口號(hào)
//ntohs(temp?->?clientAddr.sin_port);?
cout?<“測(cè)試開(kāi)始等待客戶(hù)端發(fā)送消息...“?< //從客戶(hù)端處接受數(shù)據(jù)
char?Buffer[MAXBYTE]?=?{?0?};?//緩沖區(qū)
recv(temp->clientSocket?Buffer?MAXBYTE?0);?//recv方法?從客戶(hù)端通過(guò)clientScocket接收
cout?<“線(xiàn)程“?<id?<“從客戶(hù)端的“?<clientAddr.sin_port)?<“號(hào)端口收到:“?<
//發(fā)送簡(jiǎn)單的字符串到客戶(hù)端
const?char*?s?=?“Server?file“;
send(temp->clientSocket?s?strlen(s)?*?sizeof(char)?+?1?NULL);
cout?<“線(xiàn)程“?<id?<“通過(guò)客戶(hù)端的“?<clientAddr.sin_port)?<“號(hào)端口發(fā)送:“?<
m.unlock();
return?0;
}
int?main()
{
WSADATA?wsaData;
//第一個(gè)參數(shù)是winsocket?load的版本號(hào)(2.2)
WSAStartup(MAKEWORD(2?3
評(píng)論
共有 條評(píng)論