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:\BaiduNetdiskDownload\python\PyCharm2017.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)

 

posted @ 2017-09-05 13:17  咸鱼功阀术  阅读(271)  评论(0编辑  收藏  举报