文章分类 -  Linux网络编程

1
摘要:转载:https://www.cnblogs.com/aspirant/p/9166944.html (1)select==>时间复杂度O(n) 它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们 阅读全文
posted @ 2022-04-01 15:59 ren_zhg1992 阅读(58) 评论(0) 推荐(0)
摘要:如果我们只是用系统的API函数,那么别人调用的时候,就需要学习一遍socket。。。。我们将这些系统API函数进行封装,那么使用我们封装好了的财富库,就无需学习socket。把该漏的漏出来,不该漏的隐藏起来。 写本篇的目的在于,了解企业中是怎么做的。 看代码: 这是我们封装的API 下面是测试程序: 阅读全文
posted @ 2017-06-07 15:47 ren_zhg1992 阅读(313) 评论(0) 推荐(0)
摘要:转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=28502731&id=3651271 大多数UDP服务器程序是迭代运行的,服务器等待一个客户请求,读入这个请求,处理这个请求,送回其应答,再等待下一个客户请求。 然而当客户请求的处 阅读全文
posted @ 2017-06-06 11:34 ren_zhg1992 阅读(4721) 评论(0) 推荐(0)
摘要:转载:http://blog.csdn.net/turkeyzhou/article/details/16847619 1、rlimit介绍 在Linux系统中,Resouce limit指在一个进程的执行过程中,它所能得到的资源的限制,比如进程的core file的最大值,虚拟内存的最大值等。 R 阅读全文
posted @ 2017-06-06 09:50 ren_zhg1992 阅读(1442) 评论(0) 推荐(0)
摘要:转:http://www.360doc.com/content/17/0606/09/43937584_660404366.shtml 网络程序为了支持并发,可以采用select,多线程等技术.但是对于select,readhat linux系统只支持最大1024个描述符.因此要想同时并发超过102 阅读全文
posted @ 2017-06-06 09:44 ren_zhg1992 阅读(2354) 评论(0) 推荐(0)
摘要:主要看代码: 看一下服务器端代码; 阅读全文
posted @ 2017-06-05 22:47 ren_zhg1992 阅读(391) 评论(0) 推荐(0)
摘要:转载:http://www.cnblogs.com/wunaozai/p/3753731.html 刚才学了gethostbyname函数,这个gethostbyaddr函数的作用是通过一个IPv4的地址来获取主机信息,并放在hostent结构体中。 本函数返回一个指向hostent结构指针。add 阅读全文
posted @ 2017-05-12 17:11 ren_zhg1992 阅读(423) 评论(0) 推荐(0)
摘要:转载:http://www.cnblogs.com/wunaozai/p/3753415.html 我们现在认知一台计算机主机通常采用直观可读的名字。例如博客园我们会记住 www.cnblogs.com 而不是记住42.121.252.58这个IP。对于大多数的应用程序来说应该是处理名字而不是处理地 阅读全文
posted @ 2017-05-12 16:59 ren_zhg1992 阅读(11420) 评论(0) 推荐(0)
摘要:getsockname获取套接口本地的地址和端口比如客户端想知道自己用的那个IP和端口 getpeername获取已连接的对等方的套接口地址和端口比如客户端想知道自己用的那个IP和端口比如,在accept(listenfd,NULL,NULL),想要知道客户端地址没救必须使用getpeername 阅读全文
posted @ 2017-05-12 16:48 ren_zhg1992 阅读(465) 评论(0) 推荐(0)
摘要:本章目标: 五种I/O模型 select 用select改进回射客户端程序 一、五种I/O模型 阻塞I/O 非阻塞I/O I/O复用 (select和poll) 信号驱动I/O 异步I/O 阻塞I/O 非阻塞I/O 消耗cpu,一般很少使用。 I/O复用 select管理文件描述符集合。 信号驱动I 阅读全文
posted @ 2017-03-28 09:33 ren_zhg1992 阅读(190) 评论(0) 推荐(0)
摘要:目标: TCP 11种状态 连接建立三次握手、连接终止四次握手 TIME_WAIT与SO_REUSEADDR SIGPIPE 一、TCP11中状态 当客户端和服务器端同时关闭的时候才会产生CLOSING状态。 我们通过程序来看一下这11中状态。 LISTEN启动服务器,观察状态netstat -an 阅读全文
posted @ 2017-03-27 21:42 ren_zhg1992 阅读(179) 评论(0) 推荐(0)
摘要:本章主要任务;1.继续晚上TCP回射客户/服务器程序2.再次强调TCP是个流协议3.僵死进程与SIGCHLD信号 一、TCP回射客户/服务器程序 第一种会粘包,第二种用在行位加\n。readline. 第三种解决粘包问题就是使用,定长包,但是这种方式效率低,浪费缓冲区。改进机制是我们可以在包中加入包 阅读全文
posted @ 2017-03-24 21:08 ren_zhg1992 阅读(185) 评论(0) 推荐(0)
摘要:本章主要内容1.read\write和recv\send函数的区别2.readline实现3.用readline实现回射客户/服务器4.getsockname、getpeername的简单介绍5.gethostname、gethostbyname、gethostbyaddr的简单介绍 一、1.rec 阅读全文
posted @ 2017-03-24 19:33 ren_zhg1992 阅读(133) 评论(0) 推荐(0)
摘要:tcp基于字节流,无边界 接收方不能保证一次是整个消息 产生粘包udp传输数据包,有边界 协议流与粘包 一、粘包问题可以用下图来表示: 假设主机A send了两条消息M1和M2给主机B,由于主机B一次接收的字节数是不确定的,接收方收到数据的情况可能是: 1.第一次读M1的全部,第二次读M2 的全部2 阅读全文
posted @ 2016-12-19 19:57 ren_zhg1992 阅读(131) 评论(0) 推荐(0)
摘要:接下来,我们再来实现一个点对点聊天程序。 对等通信,双发都可以发送数据。A可以发数据给B,B也可以发数据给A,通过双方共同维护一个套接字来实现。A维护connA,B维护connB。但是有一个问题,A在接收B发过来的数据的时候(read的时候),他怎么去获得键盘上的输入呢?就我们现在的技术而言,我们只 阅读全文
posted @ 2016-12-10 10:42 ren_zhg1992 阅读(90) 评论(0) 推荐(0)
摘要:在上一节中,我们使用了REUSEADDR,解决了服务器重启不能立即使用的问题。这一节,我们来解决多个客户端连接服务器的问题。 首先分析一下,之前的服务器为什么不可以接收多个客户端的连接请求。 原因是:已有一个客户端连接后 ,服务器处于while中,没有机会来处理accept 解决方法:fork思路: 阅读全文
posted @ 2016-12-09 15:36 ren_zhg1992 阅读(116) 评论(0) 推荐(0)
摘要:本章目标 REUSEADDR 处理多客户连接(process-per-connection) 点对点聊天程序实现 1.回顾 服务器端通过套接字conn,客户端通过套接字sock,他们可以互相通信 可想而知,这两个套接字都有自己的地址。对于服务器来说,它的套接字地址是在绑定的时候确定的,对于客户端来说 阅读全文
posted @ 2016-12-09 15:29 ren_zhg1992 阅读(118) 评论(0) 推荐(0)
摘要:本章目标: 1.什么是socket 2. IPv4套接口地址结构 3 通用地址结构 4网路字节序: 对于异构系统: 举个栗子,测试一下本机是大端模式还是小端模式 输出: 78 56 34 12 5字节序转换函数 输出: 12 34 56 78 6地址转换函数 举个例子: 套接字类型: 阅读全文
posted @ 2016-12-07 11:03 ren_zhg1992 阅读(130) 评论(0) 推荐(0)
摘要:回射客户/服务器模型 举个栗子: 服务器端代码: 客户端代码: 客户端: renzhuang@geroge:~/netcoding/07socket$ ./01sock_client aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa //输入aaaaaaaaaaaaaaaaaaaaaaa 阅读全文
posted @ 2016-12-07 10:36 ren_zhg1992 阅读(123) 评论(0) 推荐(0)
摘要:转自: http://blog.csdn.NET/hguisu/article/details/7445768/ 1. 网络中进程之间如何通信 进 程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进 程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相 阅读全文
posted @ 2016-12-07 10:25 ren_zhg1992 阅读(383) 评论(0) 推荐(0)

1