首页 文章

C套接字 - send()发送,recv()没有接收

提问于
浏览
-1

所以我在这里做一些客户端服务器的东西,我希望我的服务器监听客户端,当客户端连接到服务器时,客户端发送一个字符串 . 连接 Build ,客户端发送它的字符串,但是,在服务器端,recv()返回-1 .

/* Server */
int main() {

 int fd, conn_fd; 
 struct sockaddr_in ad; 
 int bytes; 
 char recv_buffer[256];

 fd = socket(AF_INET, SOCK_STREAM, 0); 
 ad.sin_family = AF_INET;
 ad.sin_port = htons(3335); 
 ad.sin_addr.s_addr = htonl(INADDR_ANY);

 bind(fd, (struct sockaddr*)&ad, sizeof(ad)); 
 listen(fd, 5);

 conn_fd = accept(fd, (struct sockaddr*)0, 0); 
 bytes = recv(fd, recv_buffer, sizeof(recv_buffer), 0); 
 printf("%d\n", bytes);

 return 0;

}

客户端只需连接到服务器:/ * Client * /

int main() {
    int fd, n;
    unsigned int s;
    struct sockaddr_in addr;
    fd = socket(AF_INET, SOCK_STREAM, 0);
    addr.sin_family = AF_INET;
    addr.sin_port = htons(3335);
    addr.sin_addr.s_addr = inet_addr("127.0.0.1");

    char buff[256] = "time";

    printf("Connecting to server....\n");
    if(connect(fd, (struct sockaddr*)&addr, sizeof(addr)) < 0) {
        printf("connect() error.\n");
        exit(1);
    }

    s = send(fd, buff, sizeof(buff), 0);    

    return 0;
}

谢谢!

1 回答

  • -1

    我发现了问题所在 . 在我的服务器代码中,我使用错误的套接字描述符recv():而不是fd,我应该使用conn_fd .

相关问题