首页 > 解决方案 > 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 。ntohsclient0.0.0.0:0

有什么问题,我该如何解决?

标签: c++sockets

解决方案


推荐阅读