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()

流程图


Python socket如何实现服务端和客户端数据传输(TCP)

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
  • asp之家 网络编程 m.aspxhome.com