zoukankan      html  css  js  c++  java
  • python之路----TCP与UDP

    TCP

    import socket
    #tcp协议
    sk = socket.socket()     # 买手机 创建一个socket对象
    sk.bind(('127.0.0.1',8080))  # 给server端绑定一个ip和端口
    sk.listen()              # py3.4
    while True:
        conn,addr = sk.accept()  # 获取到一个客户端的连接, 已经完成了三次握手建立了一个连接
                                 # 阻塞
        while True:
            msg = conn.recv(1024).decode('utf-8')    # 阻塞,直到收到一个客户端发来的消息
            print(msg)
            if msg == 'bye':break
            info = input('>>>')
            if info == 'bye':
                conn.send(b'bye')
                break
            conn.send(info.encode('utf-8'))     # 发消息
        conn.close()             # 关闭连接
    sk.close()               # 关闭socket对象,如果不关闭,还能继续接收
    # server client1 建立了长连接
    # client2
    server
    import socket
    sk = socket.socket()
    sk.connect(('127.0.0.1',8080))
    while True:
        msg = input('>>>')
        if msg == 'bye':
            sk.send(b'bye')
            break
        sk.send(msg.encode('utf-8'))
        ret = sk.recv(1024).decode('utf-8')
        if ret == 'bye':break
        print(ret)
    sk.close()
    client
    import socket
    sk = socket.socket()
    sk.connect(('127.0.0.1',8080))
    while True:
        msg = input('client2:>>>')
        if msg == 'bye':
            sk.send(b'bye')
            break
        sk.send(('client2 :'+msg).encode('utf-8'))
        ret = sk.recv(1024).decode('utf-8')
        if ret == 'bye':break
        print(ret)
    sk.close()
    client2

    UDP

    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)  #DGRAM datagram
    sk.bind(('127.0.0.1',8080))       #只有服务端有的
    
    msg,addr = sk.recvfrom(1024)
    print(msg.decode('utf-8'))
    sk.sendto(b'bye',addr)
    
    sk.close()
    server
    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    ip_port = ('127.0.0.1',8080)
    
    sk.sendto(b'hello',ip_port)
    ret,addr = sk.recvfrom(1024)
    print(ret.decode('utf-8'))
    
    sk.close()
    client

    UDP协议实现qq聊天

    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    sk.bind(('127.0.0.1',8080))
    while True:
        msg,addr = sk.recvfrom(1024)
        print(addr)
        print(msg.decode('utf-8'))
        info = input('>>>').encode('utf-8')
        sk.sendto(info,addr)
    
    sk.close()
    server
    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    ip_port = ('127.0.0.1',8080)
    while True:
        info = input('tiger :')
        info = ('33[34m来自tiger的消息 :%s33[0m'%info).encode('utf-8')
        sk.sendto(info,ip_port)
        msg,addr = sk.recvfrom(1024)
        print(msg.decode('utf-8'))
    
    sk.close()
    client1
    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    ip_port = ('127.0.0.1',8080)
    while True:
        info = input('二哥 :')
        info = ('33[32m来自二哥的消息 :%s33[0m'%info).encode('utf-8')
        sk.sendto(info,ip_port)
        msg,addr = sk.recvfrom(1024)
        print(msg.decode('utf-8'))
    
    sk.close()
    client2

    UDP实现系统时间同步

    # 提供服务
    # 接收信息 时间的格式
    # 将我的时间转换成 接受到的格式
    # 发回给客户端

    import time
    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    sk.bind(('127.0.0.1',8090))
    while True:
        strf,addr = sk.recvfrom(1024)
        strf = strf.decode('utf-8')
        res = time.strftime(strf).encode('utf-8')
        sk.sendto(res,addr)
    sk.close()
    server
    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    addr = ('127.0.0.1',8090)
    info = input('>>>').encode('utf-8')
    sk.sendto(info,addr)
    ret,addr = sk.recvfrom(1024)
    print(ret.decode('utf-8'))
    
    sk.close()
    client
  • 相关阅读:
    Java程序:从命令行接收多个数字,求和并输出结果
    大道至简读后感
    大道至简第一章读后感Java伪代码
    Creating a SharePoint BCS .NET Connectivity Assembly to Crawl RSS Data in Visual Studio 2010
    声明式验证超时问题
    Error message when you try to modify or to delete an alternate access mapping in Windows SharePoint Services 3.0: "An update conflict has occurred, and you must re-try this action"
    Upgrading or Redeploying SharePoint 2010 Workflows
    Upgrade custom workflow in SharePoint
    SharePoint 2013中Office Web Apps的一次排错
    How to upgrade workflow assembly in MOSS 2007
  • 原文地址:https://www.cnblogs.com/TheLand/p/8360093.html
Copyright © 2011-2022 走看看