zoukankan      html  css  js  c++  java
  • python_112_网络编程 Socket编程

    实例1:客户端发小写英文,服务器端返回给客户端大写英文(仅支持一次接受发送)

    服务器端:

    #服务器端(先于客户端运行)
    import socket
    server=socket.socket()
    server.bind(('localhost', 6969))#绑定要监听的端口,只能接受一个参数
    server.listen()#监听
    
    print('我要开始等电话了')
    conn,addr=server.accept()#等电话打进来    conn:连接标记    addr:对方的地址
    #conn就是客户端连过来而在服务器端为其生成的一个连接实例
    print('conn:',conn)
    print('addr:',addr)
    print('电话来了')
    
    data=conn.recv(1024)#接受数据    数据大小最好<=8192  recv默认是阻塞的
    print('recv',data)
    conn.send(data.upper())#返回一个值
    
    server.close()
    

    客户端:

    #客户端
    import socket
    
    client=socket.socket()#声明协议(socket)类型,同时生成socket连接对象
    client.connect(('localhost',6969))#连接,只能接受一个参数
    
    client.send(b'hello world')#发送数据  注:python3中只能发byte类型,python2可以发字符串,byte(字节)类型
    # 注:byte类型只能接受ascall码数据类型
    # client.send('我要下载aaa片'.encode())#发送中文要这样写(英文也没问题)
    data=client.recv(1024)#接受服务器端的返回,可以指定接受大小   这里我指定的是1024个字节
    print('recv:',data)
    # print('recv:',data.decode())#接受中文要这样写(英文也没问题)
    
    client.close()
    

    实例2:重复接受与发送(linux系统上操作最合适)

    服务器端:

    import socket
    import os
    sever=socket.socket()
    sever.bind(('localhost',6969))
    sever.listen(5)#5可以更换别的数字,这里指的是可以挂起5个客户端连接(异步通信时可以懂得),默认写5个
    print('我要开始等电话了')
    
    while True:
        coon, addr = sever.accept()
        print('coon:', coon)
        print('addr:', addr)
    
        while True:
            data=coon.recv(10240)
            print('recv',data)
            if not data:
                print('client has lost')
                break
            # res = os.popen(data).read()  # 获取执行结果,并执行命令(将socket模拟ssh客户端)
            # coon.send(res)#将send替换为sendall,表示循环发送send
            coon.send(data.upper())
    
    sever.close()
    

    客户端:

    import socket
    client=socket.socket()
    client.connect(('localhost',6969))
    while True:
        msg=input('>>:').strip()#注意发送不了空的,所以要用if语句
        if len(msg)==0:continue
        client.send(msg.encode('utf-8'))
        data=client.recv(1024)
        print(data.decode())
    
    client.close()
    

      

      

  • 相关阅读:
    ajax traditional
    阿里云OSS NET SDK 引用示范程序
    js对象的两种写法
    BZOJ NOIP提高组十连测第一场
    ikbc 时光机 F87 Ctrl 失灵 解决办法
    【读书笔记】阅读的危险
    51nod 1118 机器人走方格 解题思路:动态规划 & 1119 机器人走方格 V2 解题思路:根据杨辉三角转化问题为组合数和求逆元问题
    【算法】求逆元模板
    【复习资料】软件工程之快速原型模型
    VirtualBox安装linux mint教程
  • 原文地址:https://www.cnblogs.com/tianqizhi/p/8675518.html
Copyright © 2011-2022 走看看