python日记(使用TCP实现的对话客户端和服务器)
作者:Dante丶 发布时间:2023-01-25 19:42:54
标签:python,TCP,对话,客户端,服务器
TCP 客户端
一个使用TCP协议实现可连续对话的客户端示例代码:
import socket
# 客户端配置
HOST = 'localhost'
PORT = 12345
# 创建TCP套接字并连接服务器
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((HOST, PORT))
while True:
# 获取用户输入
message = input("请输入要发送的消息:")
# 发送消息到服务器
client_socket.sendall(message.encode("utf-8"))
# 接收服务器传回的消息
data = client_socket.recv(1024)
print(f"收到来自服务器的消息:{data.decode('utf-8')}")
# 关闭套接字
client_socket.close()
在这个示例中,我们首先创建了一个TCP套接字,并使用connect()
函数连接到指定的服务器地址和端口。然后,我们通过用户输入不断发送消息到服务器,并等待服务器响应并显示其结果。请注意,由于TCP是面向连接的协议,因此我们可以通过该连接保证消息的可靠性和顺序性。
最后,我们通过close()
函数关闭套接字。
需要注意的是,当我们使用TCP协议时,需要确保服务端也使用TCP协议进行相应的通信。
TCP 服务端
以下是一个使用TCP协议实现可连续对话的服务端示例代码:
import socket
# 服务器配置
HOST = 'localhost'
PORT = 12345
# 创建TCP套接字并绑定到地址和端口
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((HOST, PORT))
# 监听连接
server_socket.listen()
# 接受连接并与客户端建立通信
client_socket, client_address = server_socket.accept()
print(f"与客户端 {client_address} 建立连接。")
while True:
# 接收客户端传来的消息
data = client_socket.recv(1024)
print(f"来自{client_address}的消息:{data.decode('utf-8')}")
if not data: # 如果客户端关闭了连接,则退出循环
break
# 获取用户输入
message = input("请输入要发送的消息:")
# 发送消息到客户端
client_socket.sendall(message.encode("uft-8"))
# 关闭套接字
client_socket.close()
server_socket.close()
在这个示例中,我们首先创建了一个TCP套接字,并将其绑定到指定的地址和端口。然后,我们通过listen()
函数开始监听客户端连接请求。
当有客户端连接时,我们调用accept()
函数接受连接并返回客户端套接字和地址。然后,我们通过循环不断接收和发送数据,从而实现了可连续对话的功能。
请注意,由于TCP是面向连接的协议,因此我们可以通过该连接保证消息的可靠性和顺序性。最后,我们通过close()
函数关闭套接字。
需要注意的是,在实际开发中,我们可能需要为每个连接创建一个新的线程或进程,以便能够同时处理多个客户端连接。
来源:https://juejin.cn/post/7213203008963936312
0
投稿
猜你喜欢
- python3.6.4安装opencv3.4.2使用pip安装OpenCV直接安装最新版:pip3 install opencv_pytho
- 结合网上的资料,自己亲自的去安装了一次MySQL,安装版本是win7x64 5.7.16。在安装过程中出现并解决了如下问题:“mysql 服
- 一、前言很多网站提供视频转GIF的功能,但要么收费要么有广告实际上我们通过python,几行代码就能够实现视频转gif二、教程1. 安装必备
- 第一次使用python写程序,确实比C/C++之类方便许多。既然这个抽奖的数据不大,对效率要求并不高,所以采用python写,更加简洁、清晰
- 学习Python的过程中,我们会遇到Access的读写问题,这时我们可以利用win32.client模块的COM组件访问功能,通过ADODB
- 这篇文章主要介绍了Python list运算操作代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 索引和切片相当于是对数组中内容的读(read)或者查询(inquiry)。是我们获取有用信息(demanded infomation)的重要
- 平时我们写个脚本,要放到后台执行去,我们怎么做呢?nohup python example.py 2>&1 /dev/null
- 最近一个vue和element的项目中遇到了一个问题: 动态生成的对象进行双向绑定是失败直接贴代码: <el-form :model=
- 什么是双端队列双端队列是与队列类似的有序集合。它有一前、一后两端,元素在其中保持自己的位置。与队列不同的是,双端队列对在哪一端添加和移除元素
- 下表列出了所有Python语言支持的比较操作符。假设变量a持有10和变量b持有20,则: 例如:试试下面的例子就明白了所有的Pyt
- 井字棋简介井字棋又称三子棋,英文名为Tic Tac Toe。具体玩法为在一个3x3的棋盘上,一个玩家用X做棋子,另一个玩家用O做棋子,谁先在
- 针对16G内存的配置tmp_table_size = 64M先说下tmp_table_size吧:它规定了内部内存临时表的最大值,每个线程都
- 终于构建出了第一个神经网络,Keras真的很方便。之前不知道Keras这么方便,在构建神经网络的过程中绕了很多弯路,最开始学的TensorF
- ASP中转换unicode编码为GB编码方法:<% function urldecode(encodestr)
- 1.安装python3yum -y install wget gcc make zlib-devel readline-devel bzip
- 要将xian80地理坐标系转换成投影坐标系:xian1980 = """GEOGCS["GCS_Xi
- 方法一 1.新建一个同名的数据库 2.再停掉sqlserver(注意不要分离数据库) 3.用原数据库的数据文件覆盖掉这个新建的数据库 4.再
- 本文主要通过对海康摄像头进行抓包,模拟发送了udp包,并抓取摄像头返回的数据包,解析并提取相关信息。通过抓包发现,海康摄像头发送、接收数据使
- 简单的说:装饰器主要作用就是对函数进行一些修饰,它的出现是在引入类方法和静态方法的时候为了定义静态方法出现的。例如为了把foo()函数声明成