Python—socket中的tcp
- 2019 年 10 月 8 日
- 筆記
在python中的网络编程,即socket编程
tcp:
import socket print('服务器运行了。。。。') myfuwu = socket.socket(socket.AF_INET, socket.SOCK_STREAM) myfuwu.bind(('127.0.0.1', 8000)) while 1: myfuwu.listen(5) #监听的客户端的数量,可自己定义数量 conn,addr = myfuwu.accept() #侦听并接收此套接字的链接 print(conn) print(addr) data = conn.recv(1024) #接收的内容的大小 print('客户端发来:',data.decode('utf-8')) conn.close() myfuwu.close
接收到的客户端的结果:
服务器运行了。。。。 <socket.socket fd=504, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0,
laddr=('127.0.0.1', 8000), raddr=('127.0.0.1', 60530)> #conn的内容 ('127.0.0.1', 60530) #addr,套接字的地址 客户端发来: 123
myfuwu = socket.socket(socket.AF_INET, socket.SOCK_STREAM) myfuwu.bind(('127.0.0.1', 8000))
如果想要不同电脑的通信,在这里把ip修改成电脑的IP地址即可,客户端也是修改成服务端的ip,
第一段的socket.AF_INET是固定格式,而第二个则是tcp的,要是udp则修改成
SOCK_DGRAM
客户端:
import socket ipport = ('127.0.0.1', 8000) back_log = 5 buffer_size = 1024 print('客户端开始运行。。。。') while 1: tcp_clent = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcp_clent.connect(ipport) fasong = input("请输入你要发送的东西:") tcp_clent.send(fasong.encode('utf-8')) print('已经发送') tcp_clent.close()
tcp是一对一的通信,如果客户端关闭,服务器也会报错关闭,如果想持续运行,可以添加try expect去捕捉异常,然后实现连续的接收客户端的连接。
import socket print('服务器运行了。。。。') while 1: try: myfuwu = socket.socket(socket.AF_INET, socket.SOCK_STREAM) myfuwu.bind(('127.0.0.1', 8000)) while 1: myfuwu.listen(5) #监听的客户端的数量,可自己定义数量 conn,addr = myfuwu.accept() #链接到客户端 print(conn) print(addr) data = conn.recv(1024) #接收的内容的大小 print('客户端发来:',data.decode('utf-8')) except: print("服务器运行多一次") conn.close() myfuwu.close