首页 使用Python进行socket编程
文章
取消

使用Python进行socket编程

基于 TCP 的 Python socket 编程流程:

socket编程流程

若有误,欢迎读者指正。

图中绿框部分在实际开发中可以用子线程或子进程进程处理。

Server端示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import socket
import threading

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("0.0.0.0", 8000))
server.listen()


def handle(sck):
    while True:
        rcv_bytes = sck.recv(1024)
        rcv_data = rcv_bytes.decode("utf8")
        print("server got:", rcv_data)
        if rcv_data == "quit":
            sck.close()
            return
        resp_data = f"You said: {rcv_data}. Tell me 'quit' to quit if you want to finish ".encode("utf8")
        sck.send(resp_data)


if __name__ == '__main__':
    while True:
        print("server is accepting")
        sck, addr = server.accept()
        handle_th = threading.Thread(target=handle, args=(sck,))
        handle_th.start()

client端示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
import socket

# AF_INET 指 IPv4,SOCK_STREAM 指 TCP 协议
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接指定IP和端口号
client.connect(("127.0.0.1", 8000))

if __name__ == '__main__':
    while True:
        input_data = input("input something:")
        client.send(input_data.encode("utf8"))
        rcv_bytes = client.recv(1024)
        print(rcv_bytes.decode("utf8"))
本文由作者按照 CC BY 4.0 进行授权