匯倖酒汽議Windows和議socket殻會
<貧匯准
和匯准>
貧准處幣阻 Linux 和議 socket 殻會?宸准栖心匯和 Windows 和議 socket 殻會。揖劔?server.cpp 葎捲暦匂極旗鷹?client 葎人薩極旗鷹。
捲暦匂極旗鷹 server.cpp?
人薩極旗鷹 client.cpp?
繍 server.cpp 才 client.cpp 蛍艶園咎葎 server.exe 才 client.exe?枠塰佩 server.exe?壅塰佩 client.exe?補竃潤惚葎?
Message form server: Hello World!
Windows 和議 socket 殻會才 Linux 房揃屢揖?徽聾准嗤侭餓艶?
1) Windows 和議 socket 殻會卆正 Winsock.dll 賜 ws2_32.dll?駅倬戻念紗墮。DLL 嗤曾嶽紗墮圭塀?萩臥心?強蓑全俊垂DLL議紗墮
2) Linux 聞喘“猟周宙峰憲”議古廷?遇 Windows 聞喘“猟周鞘凹”議古廷?Linux 音曝蛍 socket 猟周才噸宥猟周?遇 Windows 曝蛍?Linux 和 socket() 痕方議卦指峙葎 int 窃侏?遇 Windows 和葎 SOCKET 窃侏?匆祥頁鞘凹。
3) Linux 和聞喘 read() / write() 痕方響亟?遇 Windows 和聞喘 recv() / send() 痕方窟僕才俊辺。
4) 購液 socket 扮?Linux 聞喘 close() 痕方?遇 Windows 聞喘 closesocket() 痕方。
捲暦匂極旗鷹 server.cpp?
#include <stdio.h>
#include <winsock2.h>
#pragma comment (lib, "ws2_32.lib") //紗墮 ws2_32.dll
int main(){
//兜兵晒 DLL
WSADATA wsaData;
WSAStartup( MAKEWORD(2, 2), &wsaData);
//幹秀耗俊忖
SOCKET servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
//鰯協耗俊忖
sockaddr_in sockAddr;
memset(&sockAddr, 0, sizeof(sockAddr)); //耽倖忖准脅喘0野割
sockAddr.sin_family = PF_INET; //聞喘IPv4仇峽
sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); //醤悶議IP仇峽
sockAddr.sin_port = htons(1234); //極笥
bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));
//序秘酌油彜蓑
listen(servSock, 20);
//俊辺人薩極萩箔
SOCKADDR clntAddr;
int nSize = sizeof(SOCKADDR);
SOCKET clntSock = accept(servSock, (SOCKADDR*)&clntAddr, &nSize);
//?人薩極窟僕方象
char *str = "Hello World!";
send(clntSock, str, strlen(str)+sizeof(char), NULL);
//購液耗俊忖
closesocket(clntSock);
closesocket(servSock);
//嶮峭 DLL 議聞喘
WSACleanup();
return 0;
}
人薩極旗鷹 client.cpp?
#include <stdio.h>
#include <stdlib.h>
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib") //紗墮 ws2_32.dll
int main(){
//兜兵晒DLL
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
//幹秀耗俊忖
SOCKET sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
//?捲暦匂窟軟萩箔
sockaddr_in sockAddr;
memset(&sockAddr, 0, sizeof(sockAddr)); //耽倖忖准脅喘0野割
sockAddr.sin_family = PF_INET;
sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
sockAddr.sin_port = htons(1234);
connect(sock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));
//俊辺捲暦匂勧指議方象
char szBuffer[MAXBYTE] = {0};
recv(sock, szBuffer, MAXBYTE, NULL);
//補竃俊辺欺議方象
printf("Message form server: %s\n", szBuffer);
//購液耗俊忖
closesocket(sock);
//嶮峭聞喘 DLL
WSACleanup();
system("pause");
return 0;
}
繍 server.cpp 才 client.cpp 蛍艶園咎葎 server.exe 才 client.exe?枠塰佩 server.exe?壅塰佩 client.exe?補竃潤惚葎?
Message form server: Hello World!
Windows 和議 socket 殻會才 Linux 房揃屢揖?徽聾准嗤侭餓艶?
1) Windows 和議 socket 殻會卆正 Winsock.dll 賜 ws2_32.dll?駅倬戻念紗墮。DLL 嗤曾嶽紗墮圭塀?萩臥心?強蓑全俊垂DLL議紗墮
2) Linux 聞喘“猟周宙峰憲”議古廷?遇 Windows 聞喘“猟周鞘凹”議古廷?Linux 音曝蛍 socket 猟周才噸宥猟周?遇 Windows 曝蛍?Linux 和 socket() 痕方議卦指峙葎 int 窃侏?遇 Windows 和葎 SOCKET 窃侏?匆祥頁鞘凹。
3) Linux 和聞喘 read() / write() 痕方響亟?遇 Windows 和聞喘 recv() / send() 痕方窟僕才俊辺。
4) 購液 socket 扮?Linux 聞喘 close() 痕方?遇 Windows 聞喘 closesocket() 痕方。
<貧匯准
和匯准>