之前一直以为time_wait状态就是主动关闭的那一方产生.然后这个端口一直不可以用.实际我发现服务端监听一个端口.客户端发来连接后.传输数据后.服务端关闭客户端套接字后.用netstat -nat | grep 端口 查看了产生了time_wait.但客户端依然可以不断连接服务端.然后服务端不断关闭.并不会影响监听端口.原来是只有服务端把监听端口描述符给关闭(不是accept那个连接.虽然,端口相同),在2mls时间内再次启动这个端口..就会提示Address already in use

另外inet_pton(AF_INET,ip地址,&serv_addr.sin_addr);
  1. #include "unp.h"
  2. int main(int argc,char *argv[])
  3. { if(argc<2)
  4. {
  5. printf("please input server_ip\n");
  6. return 0;
  7. }
  8. int fd=socket(AF_INET,SOCK_STREAM,0);
  9. if(fd<0)
  10. err_quit("socket create error");
  11. struct sockaddr_in servaddr;
  12. struct sockaddr_in clientaddr;
  13. clientaddr.sin_family=AF_INET;
  14. clientaddr.sin_port=htonl(5900);
  15. clientaddr.sin_addr.s_addr=htons(INADDR_ANY);
  16. bind(fd,(SA*)&clientaddr,sizeof(clientaddr));`
  17. servaddr.sin_family=AF_INET;//message proctoal
  18. servaddr.sin_port=htons(13);
  19. if(inet_pton(AF_INET,argv[1],&servaddr.sin_addr)<0)
  20. err_quit("inet_pton error");
  21. if(connect(fd,(SA*)&servaddr,sizeof(servaddr))<0)
  22. err_quit("connect error");
  23. char buf[1024];
  24. int read_length=0;
  25. int count=0;
  26. while((read_length=read(fd,buf,sizeof(buf)))>0)
  27. { count++;
  28. buf[read_length]='\0';
  29. printf("%s\n read %d ",buf,count);
  30. }
  31. printf("count=%d\n",count);
  32. if(read_length<0)
  33.      err-quit("error of read");
  34.      close(fd);
  35.      return 0;

服务端
  1. #include "unp.h"
  2. #include <time.h>
  3. int main(int argc,char *argv[])
  4. {
  5. int listenfd=Socket(AF_INET,SOCK_STREAM,0);
  6. struct sockaddr_in servaddr;
  7. servaddr.sin_family=AF_INET;
  8. inet_pton(AF_INET,"0.0.0.0",&servaddr.sin_addr);
  9. servaddr.sin_port=htons(13);
  10. Bind(listenfd,(SA*)&servaddr,sizeof(servaddr));
  11. Listen(listenfd,10);
  12. time_t ticks;
  13. int i;
  14. char buf[1024];
  15. for(;;)
  16. {
  17. int client_fd=accept(listenfd,NULL,0);
  18. ticks=time(NULL);
  19. snprintf(buf,sizeof(buf),"%.24s\r\n",ctime(&ticks));
  20. for(i=0;i<strlen(buf);++i)
  21. Write(client_fd,&buf[i],1);
  22. Close(client_fd);
  23. //Close(listenfd);
  24. }
  25. return 0;
  26. }
  27. ~
1.5题 不同tcp对数据做不同的处理,每次读取会发现count不同.

unix网络编程第一章demo的更多相关文章

  1. c#网络编程-第一章

    1.需求 获得网页数据,并填充到webbrowser空间中 2.代码示例 private void button1_Click_1(object sender, EventArgs e) { //1. ...

  2. UNIX网络编程 第6章 I/O复用:select和poll函数

    UNIX网络编程 第6章 I/O复用:select和poll函数

  3. UNIX网络编程 第5章 TCP客户/服务器程序示例

    UNIX网络编程 第5章 TCP客户/服务器程序示例

  4. unix 网络编程 第五章

    个人对unix 网络编程中的代码进行了精简,保留了主要和关键部分. 1 tcpserve01 程序见 https://github.com/juniperdiego/Unix-network-prog ...

  5. 《UNIX网络编程》TCP客户端服务器例子

    最近在看<UNIX网络编程>(简称unp)和<Linux程序设计>,对于unp中第一个获取服务器时间的例子,实践起来总是有点头痛的,因为作者将声明全部包含在了unp.h里,导致 ...

  6. 【unix网络编程第三版】阅读笔记(五):I/O复用:select和poll函数

    本博文主要针对UNP一书中的第六章内容来聊聊I/O复用技术以及其在网络编程中的实现 1. I/O复用技术 I/O多路复用是指内核一旦发现进程指定的一个或者多个I/O条件准备就绪,它就通知该进程.I/O ...

  7. 【unix网络编程第三版】阅读笔记(三):基本套接字编程

    unp第三章主要介绍了基本套接字编程函数.主要有:socket(),bind(),connect(),accept(),listen()等. 本博文也直接进入正题,对这几个函数进行剖析和讲解. 1. ...

  8. 《Unix 网络编程》11:名字和地址转换

    名字和地址转换 系列文章导航:<Unix 网络编程>笔记 域名系统 简介 域名系统主要用于主机名字和 IP 地址之间的映射.主机名可以是: 简单名字,如:centos01 全限定域名(FQ ...

  9. 【Linux/unix网络编程】之使用socket进行TCP编程

    实验一 TCP数据发送与接收 [实验目的] 1.熟练掌握套接字函数的使用方法. 2.应用套接字函数完成基本TCP通讯,实现服务器与客户端的信息交互. [实验学时] 4学时 [实验内容] 实现一个服务器 ...

随机推荐

  1. Android读书笔记一

    通过本章的学习真实体会到“移植”的概念:为特定设备定制Android的过程,但是移植的过程中开发最多的就是支持各种硬件设备的Linux驱动程序,本章对Android和Linux做了总体介绍.接着介绍了 ...

  2. CF-1114 (2019/02/11)

    CF-1114 A. Got Any Grapes? skip B. Yet Another Array Partitioning Task 将n个数分成连续的k组,使得每组的前m大的数字的总和最大. ...

  3. CF #552 div3

    A - Restoring Three Numbers CodeForces - 1154A Polycarp has guessed three positive integers aa, bb a ...

  4. 【线段树分治 线性基】luoguP3733 [HAOI2017]八纵八横

    不知道为什么bzoj没有HAOI2017 题目描述 Anihc国有n个城市,这n个城市从1~n编号,1号城市为首都.城市间初始时有m条高速公路,每条高速公路都有一个非负整数的经济影响因子,每条高速公路 ...

  5. 【Shiro】调用doGetAuthenticationInfo进行认证成功之后,isAuthenticated是false的问题。

    使用@Configuration配置shiro无状态登录时出现的问题,在subject.login之后当前线程重新绑定了一个假定subject,isAuthenticated. 这里自定义的访问拦截器 ...

  6. 【android】6大布局

    线性布局 相对布局 绝对布局 网格布局 表格布局 帧布局

  7. Python 变量作用域 LEGB (上)—— Local,Global,Builtin

    Python 变量作用域的规则是 LEGB LEGB含义解释:L —— Local(function):函数内的名字空间E —— Enclosing function locals:外部嵌套函数的名字 ...

  8. Django 二——models(admin、ORM),一对一、一对多、多对多操作,all、values、value_list的对比

    内容概要 1.关系对象映射ORM 2.admin的配置(选修) 3.all().values().value_list()的对比 4.数据库操作(一对一.一对多.多对多) 5.HttpResponse ...

  9. tomcat6-endpoint设计

    之前写的一个ppt 搬到博客来

  10. python算法-汉诺塔问题

    汉诺塔问题   初始状态: 思考:当盘子的个数是3的时候,大家写出移动顺序 移动的步骤: 3个盘子,从a到c 1.前面两个盘子,从a到b 1)把前面一个盘子,从a到c a->c 2)把第二个盘子 ...