c++ socket学习(1.6)

本文学习相关资料:
C/C++ socket编程教程

环境:vs2015
源码:本文代码

这次来看看UDP
之前在c++ socket学习(1.2)讲过UDP怎么发送了,那现在来做一个可以一直发送的。

这次没有什么接收端和发送端了,毕竟谁发送谁就是发送端,谁接受就是接收端

先发送数据的叫发送端,先接收的叫接收端(使用bind函数的)

接收端

//前面省略了
bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));

while (1) {
	//udp接收信息,先收为敬
	int recvlen = recvfrom(servSock, buf, readlen, 0,(sockaddr*)&clntAddr, &nSize);
	if (strcmp(buf, "exit") == 0) {
		break;
	}
	std::cout << clntAddr.sin_port << " " << "收到的信息是:" << buf << std::endl;
	//将接收的数据处理一下,再发回去
	buf[recvlen / 2] = 0;
	sendto(servSock, buf, recvlen, 0, (sockaddr*)&clntAddr, nSize);
}

发送端

int nSize = sizeof(sockaddr);
while (1) {
	std::string sendMessage;
	std::cout << "输入要发送的内容(输入exit结束):";
	std::cin >> sendMessage;
	sendto(client, sendMessage.c_str(), sendMessage.size() + 1, 0, (sockaddr*)&servAddr, sizeof(sockaddr));
	if (sendMessage.compare("exit") == 0) {
		break;
	}
	recvfrom(client, buf, readlen, 0, (sockaddr*)&servAddr, &nSize);
	std::cout << "我收到了接收端的:" << buf << std::endl;
}

接收端要绑定了,才能收到发送端的信息

那么发送端没有绑定啊,是怎么接收到接收端处理过的信息呢?

原来发送端在调用sendto的时候,就需要一个IP地址端口,程序没有指明的话就由系统自己来分配了。

接收端可以通过recvfrom获得了发送端的IP地址端口,照着发回去就好了。

上一篇:如何使用C和Windows API向Windows 7发送击键/消息?


下一篇:NFT+DeFi+社交:ODIN+THOR公链首款元宇宙应用,新众神元宇宙即将震撼来袭