python 网络编程第三版
2024-10-11 06:21:04
为服务端增加多线程解决方案
1、服务端代码如下:
***这个版本并没有真正的起到多线程的作用,主要原因在于t.join();以后的版本会改进这个问题***
#!/usr/bin/python
#!coding:utf-8 import os,sys,time
from socket import *
import threading def handleClient(conn):
print '[info] handleClient is :{0}'.format(os.getpid())
while True:
data = conn.recv(1024)
if not data : print '[info] handleClient client is stoped ..';break
print '[info] handleClient recive this --> {0}'.format(data.encode())
reply='[info] handleClient this is the information from server --> {0}'.format(data.decode())
conn.send(reply.encode())
conn.close()
sys.exit(0) if __name__ == "__main__":
hostIp='127.0.0.1'
port=2048
sock=socket(AF_INET,SOCK_STREAM)
sock.bind((hostIp,port))
sock.listen(5)
print '[info] parent pid is :{0} start listen {1}'.format(os.getpid(),(hostIp,port))
while True:
conn,addr=sock.accept()
print '[info] parent get a client {0}'.format(addr)
t=threading.Thread(target=handleClient,args=(conn,))
t.start()
t.join()
2、客户端代码如下:
#!/usr/bin/python
#!coding:utf-8 from socket import *
import os,sys if __name__ == "__main__":
#定义套接字
hostIp='127.0.0.1'
port=2048
sock=socket(AF_INET,SOCK_STREAM)
messages=['hello I am a client']
messages=messages+sys.argv[1:]
sock.connect((hostIp,port))
print '[info] 已经连接到server ' for message in messages:
sock.send(message.encode())
print sock.recv(1024).decode()
sock.close()
最新文章
- 4.在MVC中使用仓储模式进行增删查改
- 在类库中引用WebService的注意事件
- 【iCore3 双核心板】例程十:RTC实时时钟实验——显示日期和时间
- HDU 1829 A Bug's Life(种类并查集)
- PHP高效获取远程图片尺寸和大小(转)
- 一步一步学Remoting系列文章
- hdu2041java
- 经典的C++库【转帖】
- javascritpt 原型链
- jquery hide和show使用
- Java数据类型在实际开发中的应用一
- python3学习笔记11(函数)
- FPGA中分数分频器的实现代码
- 2.03-handler_openner
- (深度好文)重构CMDB,避免运维之耻
- Oracle总结一
- centos7 开机自动连网
- POI简易帮助文档系列--读取Excel文件
- October 07th 2017 Week 40th Saturday
- Head First Java &; static