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)