linux内核将所有外部设备看做一个文件来操作,对一个文件的读写操作会调用内核提供的系统命令,返回一个文件描述符fd,对一个socket的读写也会有相应的文件描述符,文件描述符就是一个数字,指向了内核中的一个结构体。 I/O模型: 阻塞 在进程空间中调用recvfrom,其系统调用直到数据包到达且被 ...
分类:
其他好文 时间:
2018-07-28 12:01:24
阅读次数:
130
一 select函数简介 select一般用在socket网络编程中,在网络编程的过程中,经常会遇到许多阻塞的函数,网络编程时使用的recv, recvfrom、connect函数都是阻塞的函数,当函数不能成功执行的时候,程序就会一直阻塞在这里,无法执行下面的代码。这是就需要用到非阻塞的编程方式,使 ...
分类:
其他好文 时间:
2018-07-25 01:05:22
阅读次数:
146
前提:基于Linux系统的学习 服务器端编程模型1 socket(2) 创建通讯端点,返回一个文件描述符fd2 bind(2) 将fd绑定到本地的地址和端口while(1){ 阻塞等待客户端请求数据的到来 recvfrom(2) 业务处理 将处理结果发送给客户端sendto(2)} 客户端编程模型1 ...
分类:
其他好文 时间:
2018-07-22 17:04:58
阅读次数:
154
四.套接字(socket)初使用 基于TCP协议的socket tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 server端 import socketsk = socket.socket()sk.bind(('127.0.0.1',8898)) #把地址绑定到套接字sk.li ...
分类:
其他好文 时间:
2018-07-19 11:56:50
阅读次数:
189
sock_raw(注意一定要在root下使用)原始套接字编程可以接收到本机网卡上的数据帧或者数据包,对于监听网络的流量和分析是很有作用的.一共可以有3种方式创建这种socket 1.socket(AF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP|IPPROTO_I ...
分类:
其他好文 时间:
2018-07-15 16:17:19
阅读次数:
137
一、阻塞IO与非阻塞IO Linux网络IO模型(5种) (1)阻塞IO模型 所有文件操作都是阻塞的,以套接字接口为例,在进程空间中调用recvfrom,系统调用直到数据包到达且被复制到应用进程缓冲区或发生错误时才返回,期间会一直等待(阻塞)。模型如图: (2)非阻塞IO模型 recvfrom从应用 ...
分类:
Web程序 时间:
2018-07-14 13:02:21
阅读次数:
230
阻塞IO(blocking IO) 在Linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样: 当用户进程调用了recvfrom这个系统调用,kernel就开始了IO的第一个阶段:准备数据。对于network io来说,很多时候数据在一开始还没有到达(比如,还 ...
分类:
编程语言 时间:
2018-07-12 23:59:43
阅读次数:
300
一个简单的聊天代码:运行结果: 在这个程序之中,由于recvfrom函数拥塞函数,没有数据时会一直阻塞,所以客户端和服务器端只能通过一回一答的方式进行信息传递。严格的讲UDP没有明确的客户端和服务端,谁先进行数据传输,谁就是客户端,客户端也有可能是服务器端。 代码1: 代码2: ...
分类:
其他好文 时间:
2018-07-07 22:35:37
阅读次数:
216
函数用法,参数选项在《UNIX网络编程_卷1》第七章,套接字选项中有详细叙述,需要的可以查阅。 此处需要注意的是: 1.getsockopt() 参数中的len必须初始化成 sizeof(int) ,此处容易跟recvfrom中的addrlen混淆。 2.设置sockbuflen之后获取出来的数值是 ...
分类:
其他好文 时间:
2018-07-03 22:28:40
阅读次数:
137
pythonnet 网络3 udp 通信 recvfrom sendtofork 多进程并发threading 多线程并发socketserver 系统模块 套接字的属性 setsockopt getsockopt ############# ftp文件服务器 1,获取文件列表; 2,能够下载文件; ...
分类:
编程语言 时间:
2018-07-03 21:33:21
阅读次数:
154