for(;;){
socklen_t len = sizeof(client_address);
connfd = accept(listenfd, (struct sockaddr *)&client_address, &len);
if(connfd < ){
printf("accept error: %s\n", strerror(errno));
}
printf("server get connection from %s\n", inet_ntop(AF_INET, &client_address.sin_addr, buff, sizeof(buff))); if((n = read(listenfd, message, )) == -){
printf("read error: %s\n", strerror(errno));
exit();
}
message[n] = '\0';
printf("receive the message of client: %s\n", message);
close(connfd); }

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

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

附:

int accept(int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen);

int read(int handle, void *buf, int nbyte);

最新文章

  1. windowsphone 的IsolatedStorageSettings存储类型
  2. asp.net常用函数表
  3. C#通过ODBC查询HANA数据库数据
  4. Stationary point
  5. 用Python作GIS之五:从示例入手—example函数
  6. matlab实现高斯消去法、LU分解
  7. Bzoj 3747: [POI2015]Kinoman 线段树
  8. iOS学习之数据解析
  9. Hibernate @Embeddable注解
  10. Ansible Filter
  11. day5 liaoxuefeng---virtualenv、图形界面、网络编程、电子邮件
  12. linux操作系统的前世今生
  13. ES6躬行记(4)——模板字面量
  14. html标题、段落、换行与字符实体
  15. re_test
  16. 数学建模:1.概述&amp; 监督学习--回归分析模型
  17. Nginx主程序使用介绍
  18. java.lang.IllegalStateException: Illegal access
  19. wpf企业应用之主从结构列表
  20. 学习用MaxScipt批处理Max文件

热门文章

  1. Linux学习笔记001——win下安装Linux虚拟机
  2. IOS 被拒 关于 iPhone running iOS 10.3.1 on Wi-Fi connected to an IPv6 network.
  3. Composer如何安装(安装注意事项)
  4. mysql: instr 多个字段 like数据
  5. toggle input radio
  6. c++primer 第五章编程练习答案
  7. 《Effective C++》——条款04:确定对象使用前已先被初始化
  8. hadoop2.5.2 安装与部署
  9. xml获取指定节点的路径
  10. BEC translation exercise 2