/Cpp代码
//服务端:
//Cpp代码
#include <iostream>
#include <stdio.h>
#include <windows.h>
using namespace std;
#pragma comment(lib, "WS2_32.lib") //加载函数库windows socket
int main()
{
WSADATA wsaData;
WORD sockVersion = MAKEWORD(2, 2);
SOCKET sListen = 0;
sockaddr_in sin = {0};
sockaddr_in remoteAddr = {0};
char szText[] = "TCP Server Demo";
int nAddrLen = 0;
nAddrLen = sizeof(sockaddr_in);
//fill sin
sin.sin_port = htons(4567);
sin.sin_family = AF_INET;
sin.sin_addr.S_un.S_addr = INADDR_ANY;
//init wsa
if (WSAStartup(sockVersion, &wsaData) != 0)
{
cout << "initlization failed!" << endl;
exit(0);
}
sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (bind(sListen, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)
{
cout << "bind failed!" << endl;
return 0;
}
if (listen(sListen, 2) == SOCKET_ERROR)
{
cout << "listen failed!" << endl;
return 0;
}
SOCKET sClient = INADDR_ANY;
while (true)
{
sClient = accept(sListen, (SOCKADDR*)&remoteAddr, &nAddrLen);
if (sClient == INVALID_SOCKET)
{
cout << "accept failed!" << endl;
continue;
}
send(sClient, szText, strlen(szText), 0);
closesocket(sClient);
}
closesocket(sListen);
WSACleanup();
}
//以上为服务端代码,以下为客户端代码,分开编译
//服务端:
#include <iostream>
#include <stdio.h>
#include <windows.h>
using namespace std;
#pragma comment(lib, "WS2_32.lib")
int main()
{
WSADATA wsaData;
WORD sockVersion = MAKEWORD(2, 2);
SOCKET sock = 0;
if (WSAStartup(sockVersion, &wsaData) != 0)
{
cout << "initlization failed!" << endl;
exit(0);
}
sock = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock == INVALID_SOCKET)
{
cout << "failed socket!" << endl;
return 0;
}
sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(4567);
sin.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//本机同时运行客户端与服务端进程,获取本机内部ip
if (connect(sock, (sockaddr*)&sin, sizeof(sockaddr)) == -1)
{
cout << "connect failed!" << endl;
return 0;
}
char buffer[256] = "/0";
int nRecv = 0;
nRecv = recv(sock, buffer, 256, 0);
if (nRecv > 0)
{
buffer[nRecv] = '/0';
cout << "reveive data: " << buffer << endl;
}
closesocket(sock);
WSACleanup();
}