基于boost库,实现一个UDP socket发送、接受数据的程序。
时间: 2024-02-27 16:58:28 浏览: 27
好的,以下是一个基于boost库的UDP socket发送、接收数据的程序示例:
```c++
#include <iostream>
#include <boost/asio.hpp>
using namespace std;
using namespace boost::asio;
int main(int argc, char* argv[])
{
if (argc != 3) {
cout << "Usage: udp <host> <port>" << endl;
return 1;
}
io_service io_service;
ip::udp::socket socket(io_service, ip::udp::endpoint(ip::udp::v4(), 0));
ip::udp::resolver resolver(io_service);
ip::udp::endpoint endpoint = *resolver.resolve({ ip::udp::v4(), argv[1], argv[2] });
string message;
while (true) {
cout << "Enter message: ";
getline(cin, message);
if (message == "exit") {
break;
}
socket.send_to(buffer(message), endpoint);
char response[1024];
ip::udp::endpoint sender_endpoint;
size_t len = socket.receive_from(buffer(response), sender_endpoint);
cout << "Response from " << sender_endpoint.address().to_string() << ": " << string(response, len) << endl;
}
socket.close();
return 0;
}
```
这个程序创建了一个UDP socket,并通过命令行参数指定了要连接的主机和端口号。程序会进入一个循环,等待用户输入消息并发送到指定主机。当用户输入"exit"时,程序退出循环并关闭socket连接。
当程序发送消息后,它会等待服务器的响应,并将响应打印在屏幕上。这个示例程序是一个简单的echo客户端,它发送什么消息,服务器就会返回什么消息。
注意:该程序只是一个示例,您需要根据自己的需求进行修改和完善。例如,您可能需要添加更多的错误处理和异常处理代码。