1.使用select实现非阻塞socket # -*- coding: cp936 -*- """ 非阻塞socket的使用(此程序在ubuntu linux和windows xp上测试,Windows可以支持select.select) 监控socket的三个list:in/out/err 程序以5000ms的时间长度为间隔,如果有客户端的请求,接收连接并进行显示;如果没有的话, 每隔5000ms显示一次"no data coming" """ import socket,select host = "" port = 50000 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM...
by jcodeer - Python文档中心 - 2007-10-30 23:06:18 阅读(4206) 回复(0)
我在server端socket()了两个,并绑定了两个端口,我把socket的两个描述符加入到读集合,后就用select()来判断。当有连接来的时候,我就fork一个子进程来处理(先accept(),再read(),write()等)。我用两个client端分别连接两个端口,为什么只有1个client端能正常工作(先连接的一个client1能正常工作,而后连接的client2一直再write()处就阻塞了)。在server端也只有两个进程,后连接的client2没有相应的进程,我用gdb调试也是一...
使用non block socket和select时遇到了问题,希望各位看下 问题描述: 我先创建一个server socket,把这个socket设为non block,然后select read这个socket,select返回时,判断这个server socket是否被set,如果是,则accept,并把accept返回的socket也设为non block并且加到select read set中,select返回时同样检查是否被set,如果是,则recv数据,但是在recv返回错误: “EAGAIN Resource temporarily unavailable”,并且sel...
我想实现的是我的服务程序可以这样操作。 如果有数据发送过来我就接受并显示数据, 如果没有则给连接过来的客户端发送一个数据。 但是这想的操作我不知道怎么弄。 我的思想是: s=socket(....); bind(...); listen(...); while(1) { FD_ZERO(&readfd); FD_ZERO(&writefd); ... ... if(select(s+1,&readfd,&writefd,0,&tm)) { if(FD_ISSET(s,&readfd)) { do ...} if(FD_ISSET(s,&writefd)) { do .....
大家在socket编程时如果select函数出现错误,返回为-1时怎么出来啊 我的程序这两天不知为啥老是select出错,原因有:connect reset by peer,illegal sequence 我程序里没有处理错误,直接break进入下次循环,结果老是出错,直到日志文件撑到2G,郁闷啊 不知道大家是怎么处理,把socket关掉重新建立连接是不是一种方法,能彻底解决问题吗
代码为: # -*- coding: windows-1252 -*- import socket #加载socket import time #加载时间 import sys #加载sysimport if __name__ == '__main__': sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('localhost', 8001)) sock.listen(5) while True: connection,address = sock.accept() try: connection.settimeout...
服务器端的代码如下:创建了一个TCP服务器哦! import socketServer class MyHandler(socketServer.BaseRequestHandler): def handle(self): while 1: dataReceived = self.request.recv(1024) if not dataReceived: break self.request.send(dataReceived)#往客户端输出数据流 myServer = socketServer.ThreadingTCPServer(('',8881),MyHandler) myServer.serve...
服务器端的代码如下:创建了一个TCP服务器哦! import socketServer class MyHandler(socketServer.BaseRequestHandler): def handle(self): while 1: dataReceived = self.request.recv(1024) if not dataReceived: break self.request.send(dataReceived)#往客户端输出数据流 myServer = socketServer.ThreadingTCPServer(('',8881),MyHandler) myServer.serve...
服务器端的代码如下:创建了一个TCP服务器哦! import socketServer class MyHandler(socketServer.BaseRequestHandler): def handle(self): while 1: dataReceived = self.request.recv(1024) if not dataReceived: break self.request.send(dataReceived)#往客户端输出数据流 myServer = socketServer.ThreadingTCPServer(('',8881),MyHandler) myServer.serve...