客户端中的recv()/ read()永远不会终止

时间:2017-04-14 18:16:00

标签: c sockets network-programming

我正在尝试实现一个从/向服务器接收和发送数据的客户端。然而,当发送工作时,接收永远不会,我的程序只挂在那里。

这是我的骨头问题区域,没有任何错误检查。

    //send data
    char* message = "LIST\n";
    write(sockfd, message, 5);

    //receive data
    int numbytes;
    char buf[100];
    if ((numbytes = recv(sockfd, buf, 99, 0)) == -1) {
        perror("recv");
        exit(1); 
    }
    buf[numbytes] = '\0';

我甚至尝试过一些疯狂的东西 -

//send data
char* message = "LIST\n";
write(sockfd, message, 5);

//receive data
char* buf = calloc(1, 100);
read(sockfd, buf, 7);        //the message I'm supposed to receive is 7 bytes, but I even tried 6 and 8 to account for any nulls etc

这也是读取的。

编辑:我添加

后终止
shutdown(sockfd, 1);

发送数据部分之后,但响应应该是

OK\n7
try.txt

我得到的唯一回应是

OK

0 个答案:

没有答案