当前位置:   article > 正文

python socket模块 TCP协议 两个py文件的通讯02_python tcp 通信双方

python tcp 通信双方

客户端向服务器的单方向通信,

  1. # 服务器端
  2. # 先启动服务器 再启动客户端
  3. import socket
  4. sk = socket.socket() # 不传参数,默认使用基于网络类型的套接字, 协议 : TCP
  5. sk.bind(('6.6.6.22', 18080)) # 端口的范围是0-65535 0-1023 不可用
  6. sk.listen() # 同时能接受的连接
  7. print('等待接受客户端的连接')
  8. fd, addr = sk.accept() # 等待接受客户端的连接 阻塞等待 返回两个值
  9. print('fd:', fd) # 打印 其中laddr是服务器端IP与端口,raddr为客户端IP与端口
  10. print('addr:', addr) # 客户端IP与端口
  11. msg_r = fd.recv(1024) # 接受数据,接受**个字节 不要小于客户端发送的内容
  12. print(msg_r.decode('utf-8')) # 打印信息以及转码
  13. fd.close()
  14. sk.close()
  1. # 客户端
  2. import socket
  3. sk = socket.socket()
  4. sk.connect(('6.6.6.22', 18080)) # 连接服务器 IP与其端口
  5. sk.send('我是讯息'.encode('utf-8')) # 传内容 以及 编码
  6. sk.close() # 关闭

双向通讯 TCP协议需要由客户端首先发起通讯

  1. # 服务器端 双向通讯
  2. # 先启动服务器 再启动客户端
  3. import socket
  4. sk = socket.socket() # 不传参数,默认使用基于网络类型的套接字, 协议 : TCP
  5. sk.bind(('6.6.6.22', 18080)) # 端口的范围是0-65535 0-1023 不可用
  6. sk.listen() # 同时能接受的连接
  7. print('等待接受客户端的连接')
  8. fd, addr = sk.accept() # 等待接受客户端的连接 阻塞等待 返回两个值
  9. print('fd:', fd) # 打印 其中laddr是服务器端IP与端口,raddr为客户端IP与端口
  10. print('addr:', addr) # 客户端IP与端口
  11. msg_r = fd.recv(1024) # 接受数据,接受**个字节 不要小于客户端发送的内容
  12. print(msg_r.decode('utf-8')) # 打印信息以及转码
  13. msg_s = input('>>>')
  14. fd.send(msg_s.encode('utf-8')) # 向客户端发送信息
  15. fd.close()
  16. sk.close()
  1. # 客户端 双向通讯
  2. import socket
  3. sk = socket.socket()
  4. sk.connect(('6.6.6.22', 18080)) # 连接服务器 IP与其端口
  5. sk.send('我是讯息'.encode('utf-8')) # 传内容 以及 编码
  6. msg_r = sk.recv(1024).decode('utf-8') # 收来自服务器的信息
  7. print(msg_r)
  8. sk.close() # 关闭

循环通讯

  1. # 服务器端 双向循环通讯
  2. # 先启动服务器 再启动客户端
  3. import socket
  4. sk = socket.socket() # 不传参数,默认使用基于网络类型的套接字, 协议 : TCP
  5. sk.bind(('6.6.6.22', 18080)) # 端口的范围是0-65535 0-1023 不可用
  6. sk.listen() # 同时能接受的连接
  7. while 1:
  8. print('等待接受客户端的连接')
  9. fd, addr = sk.accept() # 等待接受客户端的连接 阻塞等待 返回两个值
  10. while 1:
  11. print('fd:', fd) # 打印 其中laddr是服务器端IP与端口,raddr为客户端IP与端口
  12. print('addr:', addr) # 客户端IP与端口
  13. msg_r = fd.recv(1024) # 接受数据,接受**个字节 不要小于客户端发送的内容
  14. print(msg_r.decode('utf-8')) # 打印信息以及转码
  15. if msg_r.decode('utf-8') == 'q':
  16. break
  17. msg_s = input('>>>')
  18. fd.send(msg_s.encode('utf-8')) # 向客户端发送信息
  19. if msg_s == 'q':
  20. break
  21. fd.close()
  22. sk.close()
  1. # 客户端 双向循环通讯
  2. import socket
  3. sk = socket.socket()
  4. sk.connect(('6.6.6.22', 18080)) # 连接服务器 IP与其端口
  5. while 1:
  6. msg = input(">>>")
  7. sk.send(msg.encode('utf-8')) # 传内容 以及 编码
  8. if msg == 'q':
  9. break
  10. msg_r = sk.recv(1024).decode('utf-8') # 收来自服务器的信息
  11. print(msg_r)
  12. if msg_r == 'q':
  13. break
  14. sk.close() # 关闭

服务器设置等待客户端连接的超时时间 超时报错

  1. # 服务器端
  2. # 先启动服务器 再启动客户端
  3. import socket
  4. sk = socket.socket() # 不传参数,默认使用基于网络类型的套接字, 协议 : TCP
  5. sk.bind(('6.6.6.22', 18080)) # 端口的范围是0-65535 0-1023 不可用
  6. sk.listen() # 同时能接受的连接
  7. #######################
  8. sk.settimeout(5) # 设置等待超时时间 超时没有连接报错 单位:秒
  9. #######################
  10. print('等待接受客户端的连接')
  11. fd, addr = sk.accept() # 等待接受客户端的连接 阻塞等待 返回两个值
  12. print('fd:', fd) # 打印 其中laddr是服务器端IP与端口,raddr为客户端IP与端口
  13. print('addr:', addr) # 客户端IP与端口
  14. msg_r = fd.recv(1024) # 接受数据,接受**个字节 不要小于客户端发送的内容
  15. print(msg_r.decode('utf-8')) # 打印信息以及转码
  16. fd.close()
  17. sk.close()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/791337
推荐阅读
相关标签
  

闽ICP备14008679号