0
点赞
收藏
分享

微信扫一扫

Python 技术篇-socket套接字实现两个窗口间消息传递实例演示,TCP实现

本篇介绍用 ​TCP​ 来实现。

socket​ 实现客户端服务器的消息传递有 ​TCP​ 和 ​UDP​ 两种方式。

TCP 可以实现客户端和服务器相互传递消息,UDP 只能由服务器向客户端传递消息​。

创建一个 TCP 连接的 socket 对象​:

​socket()​​,没有参数就代表 ​TCP​ 连接。

​下面这段是等待客户端连接​,​连接成功后返回新的连接 conn,这就是与客户端的连接,后续相互发消息用的就是这个​。客户端用 ​​Socket_TCP.connect(addr)​​ 与服务器连接。

Socket_TCP.listen(10)   # 监听
conn, addr = Socket_TCP.accept() # 阻塞式连接

TCP​ 接受消息:​​recv()​

TCP​ 发送消息:​​send()​​ 或 ​​sendall()​​,后面的是完整的消息。

传送消息时需要 bytes 类型的消息​,下面两行用于格式的相互化:

​bytes('要化的消息', encoding='utf-8')​

​str('要化的消息', encoding='utf-8')​

服务器代码:

from socket import *

host = "" # ip,服务器空ip代表本地
port = 7777 # 端口号
addr = (host, port)

Socket_TCP = socket() # 创建套接字
Socket_TCP.bind(addr) # 服务器用bind绑定本地,也算是服务器的标识

print("Waitting...")

Socket_TCP.listen(10)
conn, addr = Socket_TCP.accept()

while True:
data = conn.recv(1000) # 1000是参数缓冲区大小
data = str(data, encoding = 'utf-8') # 将接收的字节类型数据转化为字符串类型
print("来自" + str(addr)+"发来的消息: " + data)

conn.send(bytes("服务器已收到消息!\n",encoding = 'utf-8')) # 像客户端发送消息

if data == "exit":
break

conn.close() # 关闭客户端的连接
Socket_TCP.close() # 关闭套接字

客户端代码:

from socket import *

host = "127.0.0.1" # 服务器的地址,因为服务器也在本地,所以填本地地址了
port = 7777 # 端口号要与服务器一致

addr = (host, port)
Socket_TCP = socket()

Socket_TCP.connect(addr)

while True:
data = input("向服务器发送消息: ")
data = bytes(data, encoding = 'utf-8') # 因为input返回的是字符串类型的数据,data需要字节类型的数据
Socket_TCP.sendall(data)

print(str(Socket_TCP.recv(1000),encoding = 'utf-8'))# 打印从服务器传来的消息

if data == "exit":
break

Socket_TCP.close()

服务器窗口截图:

Python 技术篇-socket套接字实现两个窗口间消息传递实例演示,TCP实现_TCP

客户端窗口截图:

“服务器已收到消息”是服务器传来的!

Python 技术篇-socket套接字实现两个窗口间消息传递实例演示,TCP实现_python套接字_02

喜欢的点个赞❤吧!



举报

相关推荐

0 条评论