Python 技术篇-socket套接字实现两个窗口间消息传递,TCP实现
时间:2022-07-25
本文章向大家介绍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()
服务器窗口截图:
客户端窗口截图: “服务器已收到消息”是服务器传来的!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法