Server:
1 #!/usr/bin/python2 #Enconding:utf-83 ImportSYS4 ImportSocket5 ImportSelect6 Import Time7 8host="'9port=21234TenAddr=(Host,port) Onebufsiz=8096 A -sersock=Socket.socket (Socket.af_inet,socket. SOCK_STREAM) -Sersock.setsockopt (socket. Sol_socket,socket. so_reuseaddr,1) the #sersock.setblocking (False) - Sersock.bind (ADDR) -Sersock.listen (10) - +inputs=[Sersock,sys.stdin] -outputs=[] +Timeout=45 A at - whileTrue: -Tcpclisock,addr=sersock.accept () - inputs.append (Tcpclisock) - - whileTrue: inreadyinput,readyoutput,readyexception=Select.select (inputs,[],[]) - forIndatainchReadyinput: to ifIndata isTcpclisock: +Data=tcpclisock.recv (Bufsiz) - if notData: the Break * Print "%s from%s"%(DATA,ADDR) $ Else:Panax NotoginsengData=raw_input () - if notData: the Break +Tcpclisock.send ('[%s]%s'%(Time.ctime (), data)) A theTcpclisock.close ()
Client:
1 #!/usr/bin/python2 ImportSYS3 ImportSocket4 ImportSelect5 6host='localhost'7port=212348Addr=(Host,port)9bufsiz=8096Ten Oneclisock=Socket.socket (Socket.af_inet,socket. SOCK_STREAM) A Clisock.connect (ADDR) - -inputs=[Clisock,sys.stdin] theoutputs=[] - - whileInputs: -Readable,writable,exceptional=Select.select (inputs,outputs,inputs) + forSinchReadable: - ifS isClisock: +Data=s.recv (Bufsiz) A ifData: at Print "%s from server"%Data - Else: - Continue - Else: -Data=raw_input () - if notData: in Break - clisock.send (data) toClisock.close ()
Python simple full-duplex chat