[英]Use of connect after recvfrom with socket
嗨,我想等待客戶端的第一條消息作為具有 UDP 協議的服務器,所以我在創建客戶端套接字時發送一條消息,我使用 recvfrom 來獲取消息和客戶端的地址。它工作得很好我可以讀取緩沖區中的消息,但是在此操作之后,我嘗試將服務器連接到客戶端地址,但是此操作為連接過程返回值 -1,我不明白原因。這是我的 function 等待客戶端當我嘗試連接到 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, 0, (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的結構
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.