python进行udp/tcp简单通信

冷不防 2023-02-10 01:27 90阅读 0赞

一、UDP服务端

  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. import socket
  4. # 基于网络的数据报协议 UDP
  5. server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  6. # 绑定这个端口,接收这个端口的消息,参数是元组,括号不能少
  7. server.bind(('192.168.1.110', 5000))
  8. while True:
  9. # 1024 缓冲区。recvfrom可以得到发送方的消息和地址,recv只能得到消息
  10. msg, addr = server.recvfrom(1024)
  11. print(msg, addr)
  12. # 发送数据到指定的地址
  13. server.sendto(msg.upper(), addr)

二、UDP客户端

  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. import socket # 网络通信 TCP,UDP
  4. # SOCK_DGRAM表示UDP,SOCKET_STREAM表示TCP
  5. client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  6. while True:
  7. msg = input('>>: ').strip()
  8. if not msg:
  9. continue
  10. client.sendto(msg.encode('utf-8'), ('192.168.1.110', 5000))
  11. back_msg, addr = client.recvfrom(1024)
  12. print(back_msg.decode('utf-8'), addr)
  13. if back_msg.decode('utf-8') == 'CLOSE':
  14. break
  15. client.close()

三、TCP服务端

  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. import socket
  4. ip_port = ('127.0.0.1', 5001)
  5. # 创建套接字
  6. server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  7. # 绑定服务地址
  8. server.bind(ip_port)
  9. # 监听连接请求
  10. server.listen(5)
  11. print('启动socket服务,等待客户端连接...')
  12. # 等待连接,此处自动阻塞
  13. conn, address = server.accept()
  14. while True:
  15. # 接收信息
  16. client_data = conn.recv(1024).decode()
  17. if client_data == "exit":
  18. conn.close()
  19. exit("通信结束")
  20. print("来自%s的客户端向你发来信息:%s" % (address, client_data))
  21. # 回馈信息给客户端
  22. conn.sendall('服务器已经收到你的信息'.encode())

四、TCP客户端

  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. import socket
  4. ip_port = ('127.0.0.1', 5001)
  5. client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  6. client.connect(ip_port)
  7. while True:
  8. msg = input("请输入要发送的信息: ").strip()
  9. if not msg:
  10. continue
  11. client.sendall(msg.encode())
  12. if msg == "exit": # 如果输入的是‘exit’,表示断开连接
  13. print("结束通信")
  14. break
  15. server_reply = client.recv(1024).decode()
  16. print(server_reply)
  17. client.close()

发表评论

表情:
评论列表 (有 0 条评论,90人围观)

还没有评论,来说两句吧...

相关阅读