//sender.cpp一个文件简单搞定
#define _WINSOCK_DEPRECATED_NO_WARNINGS 1 //VS必须加其他编译器随意
#include<winsock2.h>
#include<iostream>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
class sender
{
private:
SOCKET sock;
sockaddr_in addr;
public:
sender(const char ip[], int port)
{
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.S_un.S_addr = inet_addr(ip);//套路三连
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == INVALID_SOCKET)
{
cout << "build failed" << endl;
}
}
int SendHello()
{
if (connect(sock, (SOCKADDR*)&addr, sizeof(addr)) != 0)
{
cout << "connect failed" << endl;
return 0;
}
char h[] = "hello world";
cout << "waiting for recv" << endl;
send(sock, (char*)h, sizeof(h), 0);//socket编程中用于发送数据的函数
cout << "success" << endl;
return 0;
}
};
int main()
{
WSADATA wsaData;//套路二连
WSAStartup(MAKEWORD(2, 2), &wsaData);
sender Sender("127.0.0.1",3000);
Sender.SendHello();
system("pause");
}
//receiver.cpp
#define _WINSOCK_DEPRECATED_NO_WARNINGS 1
#include<winsock2.h>
#include<iostream>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
class Reciever
{
private:
SOCKET server;
SOCKET client;
SOCKADDR_IN SA;
SOCKADDR_IN CA;
public:
Reciever(int port)
{
SA.sin_family = AF_INET;
SA.sin_port = htons(port);
SA.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
server = socket(AF_INET, SOCK_STREAM, 0);
bind(server, (sockaddr*)&SA, sizeof(SA));
listen(server, 5);
}
int wait()
{
int len = sizeof(CA);
client = accept(server, (sockaddr*)&CA, &len);//阻塞式的等待接受连接
cout << inet_ntoa((in_addr)CA.sin_addr)<<"Connected" << endl;
return 0;
}
int Recieve()
{
char p[512];
recv(client, p, 512, 0);//阻塞式的等待接受消息
cout << p;
return 0;
}
};
int main()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
Reciever rec(3000);
rec.wait();
rec.Recieve();
system("pause");
}