zoukankan      html  css  js  c++  java
  • python socket网络编程

    import socket
    clim=socket.socket()
    clim.connect(("localhost",6969))
    while True:
        thing=input(">>>>")
        clim.send(thing.encode("utf-8"))
        date = clim.recv(1024)
        print("reac:",date)
    clim.close()
    import socket
    server=socket.socket()
    server.bind(("localhost",6968))
    server.listen()
    while True:
        conn,addr=server.accept()
        while True:
            data=conn.recv(1024)
            print(data)
            msg=input("跟对方说什么:")
            #server.send(msg.encode("utf-8"))#这样写法是错的
            conn.send(msg.encode("utf-8"))
    
    
    # server虽然是服务器对应的socket套接字,但其实际上没有connect任何的端,因而使用server.recv就会出现错误,
    # 因为服务器的套接字对象只是listen了指定端口,而连接上可以供使用的套接字是server.accept()以后返回的套接字
    # ,这是连接到服务器指定端口的套接字,因而可以用以通信

    情况二:传输文件

    import socket
    clim=socket.socket()
    clim.connect(("localhost",6969))
    f=open("注册码.txt","wb")
    while True:
        thing=input(">>>>")
        clim.send(thing.encode("utf-8"))
        date = clim.recv(1024)
        print("reac:",date)
        f.write(date)
        f.flush()
    clim.close()
    import socket
    import os
    server=socket.socket()
    server.bind(("localhost",6969))
    server.listen()
    while True:
        conn,addr=server.accept()
        while True:
            data=conn.recv(1024)
            print(data)
            #os.popen(data)
            f=open("D:BaiduNetdiskDownloadpythonPyCharm2017.X专业版注册码.txt")
            #server.send(msg.encode("utf-8"))
            data=f.read()
            conn.send(data.encode("utf-8"))

    情况三:实现对服务器端的系统操作

    import socket
    client=socket.socket()
    client.connect(("localhost",6969))
    while True:
        thing=input(">>>>")
        client.send(thing.encode("utf-8"))
        date = client.recv(1024)
        print("reac:",date)
    clim.close()
    import socket
    import os
    server=socket.socket()
    server.bind(("localhost",6969))
    server.listen()
    while True:
        conn,addr=server.accept()
        while True:
            data=conn.recv(1024)
            print(data)
            res=os.popen(data)
            # os.popen(command[, mode[, bufsize]])执行系统命令,执行结果写到一个临时文件里面,返回值是这个打开的文件对象。mode默认值为r,即默认以只读方式打开文件;
            # buffersize默认是系统缓冲区大小(buffer缓冲,此概念适用于磁盘写数据;cache缓存,此概念适用于磁盘读数据)。
            #
            # 既然返回的是一个文件对象,那么接下来可以理解os.popen().read(),是把这个文件对象中的内容读出来,
            # 返回值就是文件中的内容。
            conn.send(res)
  • 相关阅读:
    《单元测试之道C#版——使用NUnit》测试哪些内容 RightBICEP
    《领域驱动设计》读书笔记(三) 消化知识
    法雷数列浅谈 RL
    四种常用最短路径算法模板 RL
    PIG 学习笔记1
    readme
    隐藏系统队伍框架
    关于时间的一些函数
    两个作用相同的宏.
    自动拾取确认,自动复活确认
  • 原文地址:https://www.cnblogs.com/zfquan/p/7478190.html
Copyright © 2011-2022 走看看