socket 基本流程:如下图
基于pyhton 3.5 的简单 socket 应用:
server.py
import socketsk=socket.socket()ip_port=('127.0.0.1',9999)#绑定ip+协议+端口:用来唯一标识一个进程,ip_port必须是元组格式sk.bind(ip_port)sk.listen(5)while True: conn,adress=sk.accept() #conn:表示与客户端连接线路 可理解为 conn=sk.accept()[0] conn.send(bytes("Hello World", encoding = "utf8")) #发送消息 flag=True while flag: data=conn.recv(1024) #接受的数据 print(data) if data =='exit': flag=False conn.send(bytes("sb", encoding = "utf8")) conn.close()
client.py
import socketclient=socket.socket()ip_port=('127.0.0.1',9999)client.connect(ip_port)while True: data=client.recv(1024) print(data) msg=input('client:请输入') client.send(bytes(msg, encoding = "utf8")) if msg=='exit': break
注意事项:
- 1、套接字错误:python3.5版本后套接字只能发字节数(bytes),不能发字符串,在python2.7中支持发字符串形式(str)
- 2、退出只在客户端退出就ok了
- 3、accept()和s.recv()是堵塞(基于链接正常)
- 4、listen(n):n代表:能挂起的链接数,如果n=1,代表可以链接的一个,挂起一个,第三个拒绝链接
socket 常用参数:
send()
发送数据
python3.5:只支持字节方式传递 ,需要字符串转字节 --> bytes('xxx' ,encoding='utf-8') python2.7:可以按照字符串方式传递 ,可以直接使用字符串