Python socket如何实现服务端和客户端数据传输(TCP)
作者:时光不写代码 时间:2023-08-25 01:02:43
socket服务端和客户端数据传输(TCP)
服务器端:
import socket
#创建一个socket对象
socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "127.0.0.1"
port = 9999
#绑定地址
socket_server.bind((host, port))
#设置监听
socket_server.listen(5)
# socket_server.accept()返回一个元组, 元素1为客户端的socket对象, 元素2为客户端的地址(ip地址,端口号)
client_socket, address = socket_server.accept()
#while循环是为了让对话持续
while True:
#接收客户端的请求
recvmsg = client_socket.recv(1024)
#把接收到的数据进行解码
strData = recvmsg.decode("utf-8")
#设置退出条件
if strData == 'q':
break
print("接收: %s" % strData)
#输入
msg = input("发送: ")
#发送数据,需要进行编码
client_socket.send(msg.encode("utf-8"))
#关闭服务器端
socket_server.close()
客户端:
import socket
#创建一个socket对象
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "127.0.0.1"
port = 9999
#连接服务端
client.connect((host, port))
while True:
send_msg = input("发送: ")
#设置退出条件
if send_msg == "q":
break
send_msg = send_msg
#发送数据,编码
client.send(send_msg.encode("utf-8"))
#接收服务端返回的数据
msg = client.recv(1024)
#解码
print("接收:%s", % msg.decode("utf-8"))
#关闭客户端
client.close()
流程图
socket服务端,客户端互相通信
利用socket传递参数,把运行的程序与客户端结合,先启动服务端,再启动客户端。基础代码如下:
服务端代码
import socket
import time
print("服务端开启")
#创建套接字
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#设置IP和端口
#host = socket.gethostname()
host = '127.0.1.1'
port = 3333
#bind绑定该端口
mySocket.bind((host, port))
#监听
mySocket.listen(10)
while True:
#接收客户端连接
print("等待连接....")
client, address = mySocket.accept()
print("新连接")
print("IP is %s" % address[0])
print("port is %d\n" % address[1])
while True:
#发送消息
msg = input("服务端发送:")
client.send(msg.encode(encoding='utf-8'))
print("发送完成")
print (time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))#格式化时间戳为标准格式
if msg == "EOF":
break
if msg == "quit":
client.close()
mySocket.close()
print("程序结束\n")
exit()
#读取消息
msg = client.recv(1024)
print("服务端接收:",msg.decode("utf-8"))#把接收到的数据进行解码
print("读取完成")
if msg == b"EOF":
break
if msg == b"quit":
client.close()
mySocket.close()
print("程序结束\n")
exit()
客户端代码:
import socket
print("客户端开启")
#创建套接字
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#设置ip和端口
#host = socket.gethostname()
host = '127.0.1.1'
port = 3333
try:
mySocket.connect((host, port)) ##连接到服务器
print("连接到服务器")
except : ##连接不成功,运行最初的ip
print ('连接不成功')
while 1:
#接收消息
msg = mySocket.recv(1024)
print("客户端接收:%s" % msg.decode("utf-8"))#把接收到的数据进行解码
print("读取完成")
if msg == b"EOF":
break
if msg == b"quit":
mySocket.close()
print("程序结束\n")
exit()
#发送消息
msg = input("客户端发送:")
mySocket.send(msg.encode(encoding='utf-8'))
print("发送完成")
if msg == "EOF":
break
if msg == "quit":
mySocket.close()
print("程序结束\n")
exit()
print("程序结束\n")
来源:https://blog.csdn.net/weixin_44649870/article/details/87367670
标签:socket,服务端,客户端,数据传输
0
投稿
猜你喜欢
原生JS仿QQ阅读点击展开、收起效果
2024-04-22 13:25:17
解决MySQL 5数据库连接超时问题
2009-03-25 15:24:00
Python时间转化方法超全总结
2021-10-23 02:39:56
Python实现自动批量修改文件名称
2023-07-30 04:56:56
ACCESS数据库转换MYSQL数据库的软件
2007-09-20 20:06:00
解决pycharm同一目录下无法import其他文件
2021-03-22 10:02:14
如何实现表单提交时提示正在发送
2008-12-23 13:30:00
使用APScheduler3.0.1 实现定时任务的方法
2023-12-12 04:16:05
JavaScript—window对象使用示例
2024-05-08 09:39:34
go 语言字符类型 byte 与 rune案例详解
2024-04-26 17:22:57
Python实现繁體转为简体的方法示例
2022-08-10 01:49:58
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2022-07-21 04:55:52
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2024-06-16 21:04:57
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2023-11-13 11:30:37
Java动态-代理实现AOP
2023-07-15 09:33:43
python读取视频流提取视频帧的两种方法
2023-04-04 15:10:22
python绘制发散型柱状图+误差阴影时间序列图+双坐标系时间序列图+绘制金字塔图
2023-09-19 17:50:36
慎用UL列表
2009-03-25 20:21:00
JS实现动态添加外部js、css到head标签的方法
2024-05-02 16:29:45
Python基于execjs运行js过程解析
2021-08-10 22:56:47