之前一直以为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. 【转】vxworks的default boot line说明

    boot程序的主要功能是引导vxworks 内核,所以boot程序需要知道vxworks的内核存放在何处,通过什么手段去获取.在vxworks缺省的boot程序里有一条内建的default boot ...

  2. 浅谈 MySQL 中优化 SQL 语句查询常用的 30 种方法

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索 ...

  3. NodeJS基础-Buffer

    Buffer用于处理二进制数据流 实例类似于整数数组,大小固定 C++代码在V8堆外分配物理内存 // 创建一个长度为10,且用0填充的Buffer const buf1 = Buffer.alloc ...

  4. Linux菜鸟起飞之路【五】权限管理(一)

    一.与用户相关的几个文件 1./etc/passwd 储存用户名,格式为 用户名:密码(用密码代位符X代替):UID:GID:用户描述信息:家目录:shell 用户名(login_name):是代表用 ...

  5. 17.Yii2.0框架模型添加记录

    目录 新建控制器 HomeController.php 新建model Article.php 新建控制器 HomeController.php D:\xampp\htdocs\yii\control ...

  6. python3.6 取整除法

    python3.6 中取整除法运算逻辑如下: d 非零,那么商 q 满足这样的关系: a = qd + r ,且0 ≤ r n1=7//3 #7 = 3*2 +1 n2=-6.1//3 #-7 = 3 ...

  7. Huawei warns against 'Berlin Wall' in digital world

    From China Daily Huawei technologies criticized recent registration imposed on the Chinese tech comp ...

  8. 【HIHOCODER 1599】逃离迷宫4

    描述 小Hi被坏女巫抓进一座由无限多个格子组成的矩阵迷宫. 小Hi一开始处于迷宫(x, y)的位置,迷宫的出口在(a, b).小Hi发现迷宫被女巫施加了魔法,假设当前他处在(x, y)的位置,那么他只 ...

  9. C++异常安全的赋值运算符重载 【微软面试100题 第五十五题】

    题目要求: 类CMyString的声明如下: class CMyString { public: CMyString(char *pData=NULL); CMyString(const CMyStr ...

  10. 简单配置.htaccess就可以实现的10个功能

    http://bbs.itcast.cn/thread-25990-1-1.html?xhw 1. 反盗链那些盗用了你的内容,还不愿意自己存储图片的网站是很常见的.你可以通过以下配置来放置别人盗用你的 ...