• 【9.3】socket实现聊天和多用户连接


    server

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    import socket
    import threading
    
    # AF_INET IPv4 SOCK_STREAM TCP协议
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind(('0.0.0.0', 7777))
    server.listen()
    
    
    def handle_sock(sock, addr):
        while True:
            data = sock.recv(1024)
            print(data.decode('utf-8'))
            if 'bye' in data.decode('utf-8'):
                break
            re_data = input()
            sock.send(re_data.encode('utf-8'))
        sock.close()
    
    
    # 获取从客户端发送的数据,一次获取1K的数据
    while True:
        sock, addr = server.accept()
    
        # 用线程去处理新接收的连接(用户)
        client_thread = threading.Thread(target=handle_sock, args=(sock, addr))
        client_thread.start()
    
        # data = sock.recv(1024)
        # print(data.decode('utf-8'))
        # re_data = input()
        # sock.send(re_data.encode('utf-8'))
        # sock.close()
        # server.close()

    client

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 
     4 import socket
     5 
     6 
     7 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     8 client.connect(('127.0.0.1',7777))
     9 while True:
    10     re_data = input()
    11     client.send(re_data.encode('utf-8'))
    12     data = client.recv(1024)
    13     print(data.decode('utf-8'))

    server

    client1
    server1
    client2
    server2
    bye
    client1
    server1

    client1

    client1
    server1
    client1
    server1

    client2

    client2
    server2
    bye
    

      

  • 相关阅读:
    【Python爬虫】:模拟登录QQ空间
    Docker
    Git
    DevOps
    DevOps
    gRPC 简介
    tcpdump的使用
    Raft
    go-micro 简介
    Node
  • 原文地址:https://www.cnblogs.com/zydeboke/p/11283674.html
Copyright © 2020-2023  润新知