簡體   English   中英

在recvfrom 和socket 之后使用connect

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM