zoukankan      html  css  js  c++  java
  • Socket编程, 在server端read()函数调用后显示错误:Transport endpoint is not connected (犯了低级错误)

     1 for(;;){
     2         socklen_t len = sizeof(client_address);
     3         connfd = accept(listenfd, (struct sockaddr *)&client_address, &len);
     4         if(connfd < 0){
     5             printf("accept error: %s
    ", strerror(errno));
     6         }
     7         printf("server get connection from %s
    ", inet_ntop(AF_INET, &client_address.sin_addr, buff, sizeof(buff)));
     8 
     9         if((n = read(listenfd, message, 1024)) == -1){
    10             printf("read error: %s
    ", strerror(errno));
    11             exit(1);
    12         }
    13         message[n] = '';
    14         printf("receive the message of client: %s
    ", message);
    15         close(connfd);
    16 
    17     }

          刚接触unix网络编程, 在进行简单的client/server通信时犯了低级错误, 上面的代码为server端的接收client链接请求并显示client传过来的信息, accept函数成功后返回一个内核生成的一个全新的描述符 赋值给connfd, 所以后面调用read()函数时, 第一个参数应该是connfd 而不是 listenfd。 所以代码第9行应该改为

            if((n = read(connfd, message, 1024)) == -1){ 

    附:

    int accept(int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen);
    
    int read(int handle, void *buf, int nbyte);
  • 相关阅读:
    Search a 2D Matrix
    binary search bug
    Find Minimum in Rotated Sorted Array II
    Search in Rotated Sorted Array 【新思路】
    Find Peak Element
    Find Minimum in Rotated Sorted Array
    DFS判断连通图
    分支限界法解决01背包问题
    python中ndarray和matrix
    python对数组缺失值进行填充
  • 原文地址:https://www.cnblogs.com/KarryWang/p/3199959.html
Copyright © 2011-2022 走看看