zoukankan      html  css  js  c++  java
  • 基于TCP连接的socket套接字编程

    基于TCP协议的套接字编程(简单)

    服务端

    import socket
    
    server = socket.socket()
    server.bind(
        ('127.0.0.1', 9999)
    )
    server.listen(5)
    
    conn, addr = server.accept()
    print(addr)
    
    data = conn.recv(1024).decode('utf-8')
    print(data)
    
    conn.send('来自服务端消息:我不好'.encode('utf-8'))
    conn.close()
    
    server.close()
    

    客户端

    import socket
    
    client = socket.socket()
    client.connect(
        ('127.0.0.1', 9999)
    )
    
    client.send('来自客户端消息:你好'.encode('utf-8'))
    
    
    data = client.recv(1024).decode('utf-8')
    print(data)
    
    client.close()
    

    基于TCP协议的套接字编程(复杂)

    服务端

    import socket
    
    server = socket.socket()
    server.bind(
        ('127.0.0.1', 9999)
    )
    server.listen(5)
    
    conn, addr = server.accept()
    print(addr)
    
    while True:
        # 接收客户端发送来的消息
        data = conn.recv(1024).decode('utf-8')
        print(data)
        if data == 'q':
            break
        send_msg = input('server--->client: ').encode('utf-8')
        conn.send(send_msg)
    
    conn.close()
    server.close()
    

    客户端

    import socket
    
    client = socket.socket()
    client.connect(
        ('127.0.0.1', 9999)
    )
    
    while True:
        send_msg = input('client---> server:')
        client.send(send_msg.encode('utf-8'))
        if send_msg == 'q':
            break
    
        # 服务端返回的数据
        data = client.recv(1024).decode('utf-8')
        print(data)
    
    client.close()
    
    

    服务端服务多个客户

    服务端

    import socket
    
    server = socket.socket()
    server.bind(
        ('127.0.0.1', 8888)
    )
    server.listen(5)  # 半连接数,等待的用户
    
    while True:
        conn, addr = server.accept()
        print(addr)
    
        while True:
            try:
                data = conn.recv(1024).decode('utf-8')
                print(data)
    
                # maclinux的bug:b''
                if len(data) == 0:
                    continue
    
                if data == 'q':
                    break
                send_msg = input('server--->client:').encode('utf-8')
                conn.send(send_msg)
            except Exception as e:
                print(e)
                break
    
        conn.close()
    

    客户端

    import socket
    
    client = socket.socket()
    client.connect(
        ('127.0.0.1', 8888)
    )
    
    while True:
        send_msg = input('client--->server:')
        client.send(send_msg.encode('utf-8'))
        if send_msg == 'q':
            break
    
        data = client.recv(1024).decode('utf-8')
        print(data)
    
    client.close()
    
  • 相关阅读:
    ffplay 2.5.3 媒体播放器
    MinGW/MSYS 交叉编译环境搭建
    python chm 中文帮助 (2.7 和 3.4)
    wx.html2.WebView在 target="_blank" or rel="external" 没有反映的解决方法
    韩星5,6号 一锅双星技巧
    暖房子工程
    CStringUtf8ToUnicode
    燃气灶中心炉芯帽子生锈了,如何拆不下来?
    翻窗户消失的百岁老人/百岁老人跷家去 中文字幕
    CPinyin unicode汉字查找拼音(支持多音字)
  • 原文地址:https://www.cnblogs.com/setcreed/p/11710268.html
Copyright © 2011-2022 走看看