挂上网上mynona大佬的代码:
client:
#include <stdio.h>
#include <winsock2.h>
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
#pragma comment (lib,"ws2_32")
#define NAME_LEN 20
int main(int argc, char* argv[])
{
cout << "This is Client cmd" << endl;
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
//创建一个socket来连接服务端
SOCKET s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
sockaddr_in addr;
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addr.sin_family = PF_INET;
addr.sin_port = htons(827);
//这条执行后,说明和服务端建立了连接
connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR));
char Buff[MAXBYTE] = { 0 };
char Cmd[MAXBYTE] = { 0 };
recv(s, Buff, MAXBYTE, 0);
cout << "from server:" << Buff << endl;
//不断地给服务端发送信息
while (TRUE)
{
cin >> Cmd;
cout << "your input command is:" << Cmd << endl;
send(s, Cmd, MAXBYTE, 0);
}
getchar();
WSACleanup();
return 0;
}
server:
//WSAStartup socket bind listen accept send/recv closesocket WSACleanup
#include <winsock2.h>
#include <stdio.h>
#include <iostream>
#include <windows.h>
using namespace std;
#pragma comment (lib,"ws2_32")
#pragma comment (lib,"winmm")
#define NAME_LEN 20
int main(int argc, char* grgv[])
{
cout << "This is Server cmd" << endl;
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
//这个是服务器的socket,用来绑定网卡来监听
SOCKET s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
sockaddr_in addr;
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addr.sin_port = htons(827);
addr.sin_family = PF_INET;
bind(s, (SOCKADDR*)&addr, sizeof(SOCKADDR));
listen(s, 1);
SOCKADDR clientAddr;
int nSize = sizeof(SOCKADDR);
//这个socket用来接收客户端发过来的信息
SOCKET clientSock;
//阻塞式,有客户端来连接时才会往下执行
//执行到这一步,说明客户端和服务器已经建立了连接
clientSock = accept(s, (SOCKADDR*)&clientAddr, &nSize);
cout << "sending..." << endl;
send(clientSock, "hello client \r\n", strlen("hello client \r\n" + sizeof(char)), NULL);
cout << "sended" << endl;
//不断的接收客户端发送过来的信息
while (TRUE)
{
char buff[MAXBYTE] = { 0 };
//接收客户端发来的命令
int i = 1;
i = recv(clientSock, buff, MAXBYTE, 0);
if (i != -1)
cout << "from client :" << buff << endl;
}
closesocket(clientSock);
closesocket(s);
WSACleanup();
return 0;
}
具体实现的时候,先分别得到server和client的exe文件,先执行server再执行client即可