一、为什么要产生I/O多路复用?两个主机之间通信,主机A和主机B都需要开启socket,主机A首先要等待客户端来进行连接,这是会发起一个recvfrom的系统调用,如果主机B一直没有去连接主机A,没有给主机A发送任何数据,进程就会被阻塞,无法去做其他的事情(默认的阻塞I/O模型),..
分类:
编程语言 时间:
2017-05-22 13:27:06
阅读次数:
247
socket也是io的一种,阻塞的socket操作包括: 输入:recv(), recvfrom(),缓冲区为空时阻塞 输出:send(), sendto(),缓冲区为空时阻塞 接受:accept(),无连接时阻塞 连接:connect(),无响应时阻塞,对TCP连接而言会阻塞一个服务器往返时间 解 ...
分类:
系统相关 时间:
2017-05-18 21:34:51
阅读次数:
212
一、了解Unix网络编程5种I/O模型 1.1、阻塞式I/O模型 阻塞I/O(blocking I/O)模型,进程调用recvfrom,其系统调用直到数据报到达且被拷贝到应用进程的缓冲区中或者发生错误才返回。进程从调用recvfrom开始到它返回的整段时间内是被阻塞的。 1.2、非阻塞式I/O模型 ...
分类:
编程语言 时间:
2017-05-08 10:49:43
阅读次数:
270
python/socketserver 1.socket也就是套接字,用于描述IP地址和端口,是一个通信链的句柄,可以用来实现 不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务,每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不 ...
分类:
编程语言 时间:
2017-05-05 18:25:38
阅读次数:
312
1.UDP套接字 udp服务端: udp客户端: 2.recv与recvfrom的区别: part1: 发消息都是将数据发送到己端发送缓冲中,手消息都是从己端的缓冲区中收 tcp:send发消息,recv收消息 udp:sendto发消息,recvfrom收消息 part2: tcp是基于数据流的, ...
分类:
其他好文 时间:
2017-05-04 18:28:27
阅读次数:
261
1 TCP/IP IP协议赋值吧数据从一台计算机通过网络发送到另一台计算机. 数据是被分割成一个个小块, 然后通过IP包发送出去的. 其中如何在负载的网络链路中传送的是通过路由器进行转发达到最终的目的地 TCP协议是建立在IP协议之上的, TCP协议负责在两台计算机之间建立可靠连接, 而且保证数据包 ...
分类:
其他好文 时间:
2017-05-03 17:08:22
阅读次数:
172
一、I/O模型 一个输入操作通常包括两个阶段: (1)等待数据准备好; (2)从内核向进程复制数据。 1、阻塞式 系统调用直到数据报到达且被复制到应用进程的缓冲区或者发生错误才会返回。也就是说recvfrom从开始到它返回的整段时间内都是被阻塞的。 系统调用直到数据报到达且被复制到应用进程的缓冲区或 ...
分类:
其他好文 时间:
2017-04-17 19:51:29
阅读次数:
200
在UNP卷一第三版的第8章8.9小节中说到:如果udp服务器没有启动,udp客户端在使用sendto发送一行文本后,将会等待一个永远也不会出现的应答从而阻塞在recvfrom调用上。 由于服务器段不存在,那么客户端将得到ICMP差错报文,但是这个差错却不返回给UDP,因为recvfrom仅能返回er ...
分类:
其他好文 时间:
2017-04-06 18:59:34
阅读次数:
182
相关函数:send, sendmsg, recv, recvfrom, socket头文件:#include <sys/types.h> #include <sys/socket.h>定义函数:int sendto(int s, const void * msg, int len, unsigned ...
分类:
编程语言 时间:
2017-04-06 00:48:52
阅读次数:
223
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没 ...
分类:
编程语言 时间:
2017-03-19 14:10:07
阅读次数:
190