c++ - sockaddr_in 不会在 UDP 服务器中更新
问题描述
我试图在 C++ 中练习套接字编程,但遇到了这个问题:这是我的发送和接收代码:
int sockfd;
sockaddr_in client;
unsigned int clientlen;
void _send_msg(string msg){
if (sendto(sockfd, msg.c_str(), msg.size(), 0, (sockaddr*)&client, clientlen) < 0)
throw SockException("Failed to send!");
}
string _recv_msg(){
string msg;
int buffersize;
msg.resize(1024);
buffersize = recvfrom(sockfd, &msg[0], 1023, 0, (sockaddr*)&client, &clientlen);
if (buffersize < 0)
throw SockException("Failed to recive!");
msg[buffersize] = 0;
return msg;
}
注意:sockfd
在另一个函数中定义。sockfd = socket(AF_INET, SOCK_DGRAM, 0);
当我运行代码时,我完全正常地收到来自客户端的消息,但是当我尝试响应时,它无法发送消息,我还检查inet_ntop
了is 。ntohs
client
0.0.0.0:0
有什么问题,我该如何解决?
解决方案
推荐阅读
- arrays - 如何在打字稿中将地图对象转换为数组
- javascript - For-each 循环不迭代从本地存储读取的数组
- python-3.x - 在 Python 中每个循环读取单行 CSV
- laravel - 如何在 Laravel 中调整 jpg 文件的大小
- bash - 命令 aws 在 logGroupName 处记录 create-export-task 错误 (InvalidParameterException)
- javascript - 如何通过eventListener和'this'获取元素的innerHTML?
- linux - 如何运行具有 4 个选项卡和每个选项卡中不同命令的屏幕?
- javascript - 在打字稿上创建具有泛型类型的函数
- android - 使用 DialogFragment 的自定义警报对话框未按预期运行
- diff - 区分具有恒定空间的非常大的文件(内存限制)