历代文学网 历代文学
收录来自古今中外 20 多个朝代,近 60个 国家的作者超 3万 人,诗词曲赋、文言文等作品数近 60万 个,名句超 10万 条,著作超 2万 部。

Python实战-从菜鸟到大牛的进阶之路 作者:极客学院 近现代)

章节目录树

12 Python 编写的 socket 服务器和客户端

上一章 下一章

 #!/usr/bin/env pythonimport socketimport osss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)ss.connect(('127.0.0.1',8123)) #f=open('aa','wb')ss.sendall('wokao sile')os.system('sleep 1')ss.send('FOE')data=ss.recv(1024)print "server dafu %s"%datass.close  

 #!/usr/bin/env pythonimport socketimport osss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)ss.connect(('127.0.0.1',8123)) #f=open('aa','wb')ss.sendall('hello serverdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd')os.system('sleep 1')ss.send('EOF')data=ss.recv(1024)print "server dafu %s"%datass.close  

注:服务器端一次只接收 3 个字节的数据,我让读取进入循环,然后不断累加到 data2 中,当读取到 EOF 时,退出打印 data2,当读取 FOE 时,退出打印 data2,(EOF 和 FOE 是客户端发送完数据时发送的结束符),当接收到 CTRLC+C 时,关闭 socket

 #!/usr/bin/pythonimport sockethost='127.0.0.1'port=8123s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.bind((host,port))s.listen(2)try:       while True:       conn,add=s.accept       while True:       data2=''       data1=conn.recv(3)       if data1=='EOF':       conn.send('hello clietn1')       break       if data1=='FOE':       conn.send('hello client2')       break       data2+=data1       print data2except KeyboardInterrupt:       print "you have CTRL+C,Now quit"       s.close  

服务器端:

客户端 2:

客户端 1:

上一章 下一章