python中通过线程,连接socket,实现简单的客户端与服务端的通讯 - 前端笔记-一,客户端代码 importsocket if__name__=='__main__': #创建...

学习笔记

点滴记忆
回忆过往
首页>> web后端 >>python中通过线程,连接socket,实现简单的客户端与服务端的通讯 - 前端笔记
一,客户端代码

import socket

if __name__ == '__main__':
  # 创建客户端连接对象     socket.AF_INET(ipv4)     socket.SOCK_STREAM(tcp协议)
  so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  # 建立连接  连接地址 + 端口
  so.connect(('192.168.0.108'8080))
  # 向服务端发送数据  (tcp协议层只能传输二进制数据,所以要转换成二进制)
  so.send('你好!'.encode(encoding='utf-8'))
  # 接收服务端 的数据
  so_recv = so.recv(1024)
  print(so_recv.decode())
  # 关闭客户端
  so.close()



二,服务端代码

# 简单的服务端socketdome
# import socket
#
# if __name__ == '__main__':
#   # 创建服务端对象
#   so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#   # 监听端口
#   so.bind(('192.168.0.108', 8080))
#   # 设置监听最大连接数量
#   so.listen(100)
#   # 等待客户端连接请求
#   conn_socket, ip_port = so.accept()
#   print(ip_port)
#   # 接收数据
#   so_recv = conn_socket.recv(1024)
#   print(so_recv.decode())
#   # 发送数据
#   conn_socket.send('你的消息我收到了'.encode())
#   # 关闭
#   conn_socket.close()
#   so.close()

# 优化后的socket  通过多线程连接,使多个客服端的消息正常接收
import socket
import random
import threading

def socket_h(conn_socket):
  # 接收数据
  so_recv = conn_socket.recv(1024)
  print(so_recv.decode())
  # 发送数据
  conn_socket.send(f'你的消息我收到了{random.randint(19)}'.encode())
  # 关闭
  conn_socket.close()

if __name__ == '__main__':
  # 创建服务端对象
  so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  # 监听端口
  so.bind(('192.168.0.108'8080))
  # 设置监听最大连接数量
  so.listen(100)
  while True:
    # 等待客户端连接请求
    conn_socket, ip_port = so.accept()
    print(ip_port)
    sub_socket = threading.Thread(target=socket_h,(conn_socket,))
    sub_socket.start()

  so.close()



×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

打赏作者
版权所有,转载注意明处:前端笔记 » python中通过线程,连接socket,实现简单的客户端与服务端的通讯

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)