• socket 第一课


    基于TCP的socket服务

    server.py

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

    client.py

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

    基于UDP的socket服务

    server.py

    import socket
    
    sk = socket.socket(type=socket.SOCK_DGRAM)
    sk.bind(('127.0.0.1',8080))
    msg, addr = sk.recvfrom(1024)
    
    print(msg.decode('utf-8'))
    sk.sendto(b'byebye~client', addr)
    
    sk.close()

    client.py

    import socket
    
    sk = socket.socket(type=socket.SOCK_DGRAM)
    ip_port = ('127.0.0.1', 8080)
    
    sk.sendto(b'hello server', ip_port)
    ret, addr = sk.recvfrom(1024)
    print(ret.decode('utf-8'))
    
    sk.close()

    udp的server 不需要进行监听,也不需要建立连接

    在启动服务之后只能被动的等待client发送消息

    client发送消息的同时还会自带地址信息

    消息回复的时候不仅需要发送消息,还要把自己的地址发送过去

    tcp相反

  • 相关阅读:
    HTMLParser使用简介
    用自定义注解验证一些方法
    struts框架从.jsp页面直接访问action
    Hibernate更新数据(不用update也可以)
    设计模式的模板方式应用
    实现观察者模式设计方案
    struts2中的使用BaseAction获取Session
    brew,gem,rvm 和 bundler软件包的管理工具
    oh my zsh命令
    Ruby Gem命令
  • 原文地址:https://www.cnblogs.com/Hxx0916/p/9713501.html
Copyright © 2020-2023  润新知