zoukankan      html  css  js  c++  java
  • socket:套接字

    基于TCP协议的socket

    tcp是基于链接的,必须先启动服务端,让后在启动客户端去链接服务端

    server端

    import socket
    st = socket.socket()  
    st.bind(('127.0.0.1',9885))  #把地址绑定到套接字
    st.listen()  #监听链接
    
    conn,attr = st.accept()  #接受客户端链接
    msg = conn.recv(1024)  #接受客户端信息
    print(msg.decode('utf-8')) #打印客户端信息
    conn.send('你好'.encode('utf-8'))  #向客户端发送信息
    conn.close() #关闭客户端套接字
    st.close()  #关闭服务器套接字(可选)

    clinet端

    import socket
    sk = socket.socket()  #创建客户端套接字
    sk.connect(('127.0.0.1',9885)) #尝试链接服务器
    
    sk.send(''.encode('utf-8'))  #向服务器发送信息
    ret = sk.recv(1024)   #接受服务端信息
    print(ret.decode('utf-8'))
    sk.close()  #关闭客户端套接字

    基于UDP协议的socket

    udp是无连接的,启动服务之后可以直接接受信息,不需要提前建立链接

    sercer:端

    import socket
    sk = socket.socket(type = socket.SOCK_DGRAM)
    addr = ('127.0.0.1',9000)
    sk.bind(addr)
    
    while True:
        msg,cli_addr = sk.recvfrom(1024)
        print(msg.decode('utf-8'))
        # message = input('>>>')
        sk.sendto('收到'.encode('utf-8'),cli_addr)
    
    
    #让C/S之间通信持续进行

    client端

    import socket
    sk = socket.socket(type = socket.SOCK_DGRAM)
    
    # b'hello' == 'hello'.encode('utd-8')
    sk.sendto(b'hello',('127.0.0.1',9000))
    msg,ser_addr = sk.recvfrom(1024)
    print(msg)
    print(ser_addr)
    
    sk.close()
  • 相关阅读:
    async 和 await
    C#中lock死锁
    Attribute特性
    数据库优化
    EF(ORM)
    依赖注入
    面向接口编程
    EF乐观锁与悲观锁
    为什么要使用RESTFUL风格?
    cloudsim 3.0.3下载与安装教程
  • 原文地址:https://www.cnblogs.com/wanglan/p/10058727.html
Copyright © 2011-2022 走看看