如何解决在 recvfrom 与 socket 后使用 connect
嗨,我想等待客户端的第一条消息作为具有 UDP 协议的服务器,所以我在创建客户端套接字时发送一条消息,并使用 recvfrom 来获取消息和客户端的地址。它有效很好,我可以读取缓冲区中的消息,但在此操作之后,我尝试将服务器连接到客户端地址,但此操作为连接过程返回值 -1,我不明白原因。这是我的函数等待客户端,当我尝试连接到 clientaddr 时,错误结束。
int wait_for_client(int sfd){
struct sockaddr_in clientaddr;
int len;
char buf[32];
len = sizeof(clientaddr);
int rec_stat = recvfrom(sfd,buf,32,(struct sockaddr*)&clientaddr,(socklen_t *)&len);
if(rec_stat<0){
printf("echec de receive");
fflush(stdout);
return -1;
}
printf("%s\n",buf);
fflush(stdout);
int connect_status = connect(sfd,(struct sockaddr *)&clientaddr,sizeof(clientaddr));
if(connect_status == -1){
printf("failed to connect to client\n");
fflush(stdout);
return -1;
}
printf("%s\n",buf);
return sfd;
}
解决方法
问题是因为我的 clientaddr 被声明为 sockaddr_in 但我的客户端被创建为 sockaddr_in6。所以错误是我的clientaddr的结构
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。