4

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

 2 years ago
source link: https://www.huhexian.com/43881.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

青山 2022-05-1809:48:37评论

这篇文章主要介绍了Python socket如何实现服务端和客户端数据传输(TCP),具有很好的参考价值,以下为个人经验,希望能给大家一个参考,也希望大家多多支持!

socket服务端和客户端数据传输(TCP)

服务器端:

  1. import socket
  2. #创建一个socket对象
  3. socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  4. host = "127.0.0.1"
  5. port = 9999
  6. #绑定地址
  7. socket_server.bind((host, port))
  8. #设置监听
  9. socket_server.listen(5)
  10. # socket_server.accept()返回一个元组, 元素1为客户端的socket对象, 元素2为客户端的地址(ip地址,端口号)
  11. client_socket, address = socket_server.accept()
  12. #while循环是为了让对话持续
  13. while True:
  14. #接收客户端的请求
  15. recvmsg = client_socket.recv(1024)
  16. #把接收到的数据进行解码
  17. strData = recvmsg.decode("utf-8")
  18. #设置退出条件
  19. if strData == 'q':
  20. break
  21. print("接收: %s" % strData)
  22. msg = input("发送: ")
  23. #发送数据,需要进行编码
  24. client_socket.send(msg.encode("utf-8"))
  25. #关闭服务器端
  26. socket_server.close()
  1. import socket
  2. #创建一个socket对象
  3. client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  4. host = "127.0.0.1"
  5. port = 9999
  6. #连接服务端
  7. client.connect((host, port))
  8. while True:
  9. send_msg = input("发送: ")
  10. #设置退出条件
  11. if send_msg == "q":
  12. break
  13. send_msg = send_msg
  14. #发送数据,编码
  15. client.send(send_msg.encode("utf-8"))
  16. #接收服务端返回的数据
  17. msg = client.recv(1024)
  18. print("接收:%s", % msg.decode("utf-8"))
  19. #关闭客户端
  20. client.close()

流程图

Python socket如何实现服务端和客户端数据传输(TCP)
socket服务端,客户端互相通信

利用socket传递参数,把运行的程序与客户端结合,先启动服务端,再启动客户端。基础代码如下:

服务端代码

  1. import socket
  2. import time
  3. print("服务端开启")
  4. #创建套接字
  5. mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  6. #设置IP和端口
  7. #host = socket.gethostname()
  8. host = '127.0.1.1'
  9. port = 3333
  10. #bind绑定该端口
  11. mySocket.bind((host, port))
  12. mySocket.listen(10)
  13. while True:
  14. #接收客户端连接
  15. print("等待连接....")
  16. client, address = mySocket.accept()
  17. print("新连接")
  18. print("IP is %s" % address[0])
  19. print("port is %d\n" % address[1])
  20. while True:
  21. #发送消息
  22. msg = input("服务端发送:")
  23. client.send(msg.encode(encoding='utf-8'))
  24. print("发送完成")
  25. print (time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))#格式化时间戳为标准格式
  26. if msg == "EOF":
  27. break
  28. if msg == "quit":
  29. client.close()
  30. mySocket.close()
  31. print("程序结束\n")
  32. exit()
  33. #读取消息
  34. msg = client.recv(1024)
  35. print("服务端接收:",msg.decode("utf-8"))#把接收到的数据进行解码
  36. print("读取完成")
  37. if msg == b"EOF":
  38. break
  39. if msg == b"quit":
  40. client.close()
  41. mySocket.close()
  42. print("程序结束\n")
  43. exit()

客户端代码:

  1. import socket
  2. print("客户端开启")
  3. #创建套接字
  4. mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  5. #设置ip和端口
  6. #host = socket.gethostname()
  7. host = '127.0.1.1'
  8. port = 3333
  9. mySocket.connect((host, port)) ##连接到服务器
  10. print("连接到服务器")
  11. except : ##连接不成功,运行最初的ip
  12. print ('连接不成功')
  13. while 1:
  14. #接收消息
  15. msg = mySocket.recv(1024)
  16. print("客户端接收:%s" % msg.decode("utf-8"))#把接收到的数据进行解码
  17. print("读取完成")
  18. if msg == b"EOF":
  19. break
  20. if msg == b"quit":
  21. mySocket.close()
  22. print("程序结束\n")
  23. exit()
  24. #发送消息
  25. msg = input("客户端发送:")
  26. mySocket.send(msg.encode(encoding='utf-8'))
  27. print("发送完成")
  28. if msg == "EOF":
  29. break
  30. if msg == "quit":
  31. mySocket.close()
  32. print("程序结束\n")
  33. exit()
  34. print("程序结束\n")

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK