您的位置:首页 > 运维架构 > Linux

socket_传文件_linux环境

2018-12-22 17:34 134 查看
#-*-coding:utf-8-*-
 import socket,os
 server=socket.socket()
 server.bind(('localhost',6969)) #绑定要监听的端口
 print("正在监听端口")
 server.listen(5)              #监听
 
 print("我要开始等电话了")
 while True:
     server.listen(3)
     conn, addr = server.accept()  # 等电话打进来 阻塞状态
     print(conn)  # conn就是客户端连过来而在服务端为其生成的一个连接实例
 
     print("电话来了")
     while True:
 
         data=conn.recv(1024) #通过conn连接实例接收数据 recv默认是阻塞的
         print("recv:",data)
         if not data:
             print("client has lost...") 
             break #客户端已断开,conn.recv收到的就是空数据
         #res=os.popen(data).read()
         #conn.send(res) #通过conn连接实例发送数据
         f=open("kvm-1.flv")
         data=f.read()
         print(len(data))
         conn.sendall(data)
 server.close()
 
#-*-coding:utf-8-*-
 import socket
 client=socket.socket()#默认famliy=AF_INET(ipv4)地址簇  type=SOCK_STREAM (tcp/ip) 声明socket类型,同时生成socket连接对象
 client.connect(("localhost",6969))
 f=open("video.avi",'wb')
 while True:
     msg=raw_input("请输入:").strip()  #不能发送空数据
     if len(msg)==0:continue    #如果msg长度为0,就继续 ,重新发
     client.send(msg.encode("utf-8")) #3.x 只能发bytes类型数据,只能接收ASCII数据,汉字不行,要发汉字只能编码成utf-8格式
     data=client.recv(102400) #收1024字节数据,每次最多收10M左右数据,官方建议8192字节
     #print(data.decode("utf-8")) #bytes类型打印出来要解码
     f.write(data)
     f.flush()
 client.close()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  socket 传文件