Python Socket
python socket 编程
socket 基于C/S架构 通常两个文件一个服务端(server) 一个客户端(client)
import socket 模块
socket 类型&解释
1 | socket.AF_UNIX # 只能够用于单一的Unix系统进程间通信 |
创建TCP Socket:
1 | s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) |
创建UDP Socket:
1 | s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) |
通过s = socket.socket()
方法
我们可以获得一个socket对象s,也就是通常说的获取了一个“套接字”,该对象具有以下方法(更新中):
server端:
1 | s.bind((host, port)) |
client端:
1 | s.connect((host, port)) |
公共方法
1 | s.recv(bufsize) |
注意事项
Python3以后,socket传递的都是bytes类型的数据
字符串需要先转换一下,string.encode()即可;
另一端接收到的bytes数据想转换成字符串
只要bytes.decode()一下就可以。
在正常通信时,accept()和recv()方法都是阻塞的。
所谓的阻塞,指的是程序会暂停在那,一直等到有数据过来。
socket编程思路
服务端:
创建套接字,绑定套接字到本地IP和端口:
socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind()
开始监听连接:
s.listen()
进入循环, 不断接受客户端请求
s.accept()
接收传来的数据,或者发送数据给对方
s.recv()
s.sendall()
传输完毕后,关闭套接字
s.close()
客户端
创建套接字,连接服务器地址
s.socket()
s.connect()
连接后发送数据和接收数据
s.sendall()
s.recv()
传输完毕后,关闭套接字:
s.close()
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.