zoukankan      html  css  js  c++  java
  • Python9-网络编程-day30

    # 由于不同机器上的程序要通信,才产生了网络
    # server
    # client
    # 端口 找到的程序
    # 在计算机上,每一个需要网络通信的程序,都会开一个端口
    # 在同一时间只会有一个程序占用一个端口
    # 不可能在同一时间有两个程序占用同一端口
    # 端口范围:0-65535
    # 8000之后的端口

    # ip---确定唯一一台机器
    # 端口——确定唯一的一个程序
    # ip+端口 找到唯一的一台机器上的唯一的一个程序

    # tcp协议和udp协议
    # 套接字(socket)初使用
    # Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,
    # 它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议

    #server端
    import  socket
    sk = socket.socket()               #买手机
    # sk.bind(('ip','port'))            #绑定手机卡
    sk.bind(('127.0.0.1',8080))     #绑定手机卡
    sk.listen()                         #监听等着有人给我打电话
    conn,addr = sk.accept()             #接受到别人的电话  connection 连接  address地址
    ret = conn.recv(1024)                     #听别人说话
    print(ret)
    conn.send(b'hihihihi')            #我和别人说话
    conn.close()                        #挂电话
    sk.close()                          #关机
    # 客户端
    import socket
    sk = socket.socket()   #买手机
    sk.connect(('127.0.0.1',8080))   #拨别人的号码
    sk.send(b'hellohello')
    ret = sk.recv(1024)
    print(ret)
    sk.close()

     对话模式

    #server
    import  socket
    sk = socket.socket()               #买手机
    # sk.bind(('ip','port'))            #绑定手机卡
    sk.bind(('127.0.0.1',8080))     #绑定手机卡
    sk.listen()                         #监听等着有人给我打电话
    conn,addr = sk.accept()             #接受到别人的电话  connection 连接  address地址
    print(addr)
    while True:
        ret = conn.recv(1024).decode('utf-8')
        if ret == 'bye':
            break
        print(ret)
        info = input('>>>>>>>>')
        conn.send(bytes(info,encoding='utf-8'))

    client

    import socket
    from socket import SOL_SOCKET,SO_REUSEADDR
    sk = socket.socket()   #买手机
    sk.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #就是它,在bind前加,避免服务重启的时候报address alre in use
    sk.connect(('127.0.0.1',8080))   #拨别人的号码
    while True:
        info = input('>>>>>>')
        sk.send(bytes(info,encoding='utf-8'))
        ret = sk.recv(1024).decode('utf-8')
        print(ret)
        if ret == 'bye':
            sk.send(b'bye')
  • 相关阅读:
    【第一周】进度条
    【第二周】Java实现英语文章词频统计(改进1)
    【第二周】关于java.util包下的Random类
    【第二周】结对编程(宫丽君和林莉):四则运算
    【第二周】scrum站立会议
    【第二周】燃尽图
    【第二周】Java实现英语文章词频统计
    【第一周】读《构建之法》有感
    python:带参数的装饰器,函数的有用信息
    python:数据类型dict
  • 原文地址:https://www.cnblogs.com/zhangtengccie/p/10359525.html
Copyright © 2011-2022 走看看