美文网首页
网络编程-socket

网络编程-socket

作者: Yanl__ | 来源:发表于2019-10-23 17:30 被阅读0次

    TCP

    TCP服务端

    1. 创建套接字socket
    2. 绑定端口bind
    3. 侦听客户请求listen
    4. 接受客户连接accept
    5. 接受/发送
    6. 关闭套接字
    import socket
    sk = socket.socket()
    sk.bind(('127.0.0.1', 8080))  # bind('ip', port)
    sk.listen()
    
    conn, addr = sk.accept()  # connect 连接, address 地址
    
    ret = conn.recv(1024)  # receive   revv(1024) 一次接受1024个字节
    print(ret)
    conn.send(b'hello')  # 只能发送bytes类型数据3
    
    # 先关闭连接,再关闭套接字
    conn.close()
    sk.close()
    

    TCP客户端

    1. 创建套接字
    2. 连接服务器
    3. 发送/接受
    4. 关闭套接字
    import socket
    sk = socket.socket()
    sk.connect(('127.0.0.1', 8080))
    
    sk.send(b'hi')
    ret = sk.recv(1024)
    print(ret)
    
    sk.close()
    

    例子:对话

    服务端

    import socket
    sk = socket.socket()
    sk.bind(('127.0.0.1', 8080))
    sk.listen()
    
    conn, addr = sk.accept()
    while True:
        ret = conn.recv(1024).decode('utf-8')
        if ret == 'bye':
            conn.send(bytes('bye', encoding='utf-8'))
            break
        print(ret)
        conn.send(bytes(input('>>>'), encoding='utf-8'))
    
    conn.close()
    sk.close()
    

    客户端

    import socket
    sk = socket.socket()
    sk.connect(('127.0.0.1', 8080))
    
    while True:
        sk.send(bytes(input('>>>'), encoding='utf-8'))
        ret = sk.recv(1024).decode('utf-8')
        if ret == 'bye':
            sk.send(b'bye')
            break
        print(ret)
    
    sk.close()
    

    UDP

    UDP服务端

    1. 创建套接字socket
      (type=socket.SOCK_DGRAM)
    2. 绑定端口bind
    3. 接受客户消息
      recvfrom()
    4. 向客户端发送消息
      sendto(msg, addr)
    5. 关闭套接字
    import socket
    # 1. 创建udp连接
    sk = socket.socket(type=socket.SOCK_DGRAM)  # datagram 数据报文
    # 2. 起服务
    sk.bind(('127.0.0.1', 8080))
    
    # 3. 等待客户端来连接
    msg, addr = sk.recvfrom(1024)  # 通过recvfrom设定一个报文的大小,并获得一个数据报文与客户端地址
    print(msg.decode('utf-8'))
    sk.sendto(input('服务端回复:>>>').encode('utf-8'), addr)
    
    sk.close()
    

    UDP客户端

    1. 创建套接字
    2. 向服务端发送消息
      sendto(msg, ip_port)
    3. 接受服务端过来的消息
      recvfrom()
    4. 关闭套接字
    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    ip_port = ('127.0.0.1', 8080)
    
    msg = input('客户端发送:>>>').encode('utf-8')
    sk.sendto(msg, ip_port)
    ret, addr = sk.recvfrom(1024)
    print(ret.decode('utf-8'))
    
    sk.close()
    

    相关文章

      网友评论

          本文标题:网络编程-socket

          本文链接:https://www.haomeiwen.com/subject/hyuqyctx.html