python实现TCP通信简单示例

使用python实现的一个简单的TCP通信。

本文基于python3.5,主要涉及到两个包socket和threading。

客户端简单实现如下,详见注释:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import socket
import threading
def recv(skt):
'''接收线程调用的函数 接受并输出收到的内容'''
while True:
data = skt.recv(1024) # 接收1024字节
print(data.decode('utf-8')) # 解码并输出接收到的内容
if __name__ == "__main__":
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 新建socket 使用ipv4 面向流的TCP连接
s.connect(('127.0.0.1', 6666)) # 连接的ip和端口
t = threading.Thread(target=recv, args=[s]) # 新建接收线程
t.start()
send_str = ''
while send_str != 'exit':
send_str = input('input what you want to send:\n') # 从键盘获取一个字符串
s.send(send_str.encode('utf-8')) # 将输入的字符串编码并通过socket发送
s.close()

服务器简单实现如下,详见注释:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import socket
import threading
def recv(skt):
'''接收线程调用的函数 接受并输出收到的内容'''
while True:
data = skt.recv(1024) # 接收1024字节
print(data.decode('utf-8')) # 解码并输出接收到的内容
if __name__ == "__main__":
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 新建socket 使用ipv4 面向流的TCP连接
s.connect(('127.0.0.1', 6666)) # 连接的ip和端口
t = threading.Thread(target=recv, args=[s]) # 新建接收线程
t.start()
send_str = ''
while send_str != 'exit':
send_str = input('input what you want to send:\n') # 从键盘获取一个字符串
s.send(send_str.encode('utf-8')) # 将输入的字符串编码并通过socket发送
s.close()

https://github.com/aillieo/python-socket是一个稍微复杂一点的实例,更多可以参考socket的文档