windows环境下使用C++socket发送hello world的过程

 
 //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");
}



  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值