putget_server.py
#encoding=utf-8
import socket
import common
import sys
import thread
import threading
class connection:
def __init__(self, s):
self.socket = s
self.status = "Read"
self.data = ""
self.data_len = 0
def read_command(self):
buf = ""
while True:
data = self.socket.recv(1024)
buf += data
if buf.find("/r/n/r/n") != -1:
pos = buf.find("/r/n/r/n")
self.command = buf[:pos]
self.data += buf[pos+len("/r/n/r/n"):]
self.data_len = len(self.data)
return buf
def read_n_byte(self):
self.data = self.socket.recv(1024)
self.data_len = len(self.data)
def send_file(self, filename):
fd = open(filename,"rb")
fd.seek(0, 2)
flen = fd.tell()
fd.seek(0, 0)
self.socket.send("%d/r/n/r/n"%(flen))
rest = flen
while rest >0:
buf = fd.read(1024)
rest -= len(buf)
self.socket.send(buf)
def do_socket(s):
conn = connection(s)
buf = conn.read_command()
commands = conn.command.split()
if commands[0] == "get":
conn.send_file(commands[1])
conn.socket.close()
elif commands[0] == "put":
fd = open(commands[1], "wb")
n = (long)(commands[2])
n -= conn.data_len
fd.write(conn.data)
while n>0:
conn.read_n_byte()
n -= conn.data_len
fd.write(conn.data)
fd.close()
if __name__=='__main__':
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('localhost', 9999))
sock.listen(5)
while True:
conn, addr = sock.accept()
print addr
try:
thread.start_new_thread(do_socket,(conn,))
#do_socket(conn)
except Exception,e:
print e
get.py
#encoding=utf-8
import socket
import sys
if __name__=='__main__':
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((sys.argv[1], (int)(sys.argv[2])))
filename = sys.argv[3]
buf = "get %s/r/n/r/n"%(filename)
sock.send(buf)
data = ""
while True:
data += sock.recv(1024)
if data.find("/r/n/r/n") != -1:
break
pos = data.find("/r/n/r/n")
length = (int)(data[:pos])
data = data[pos+4:]
fd = open(filename, "wb")
fd.write(data)
rest = length - len(data)
while rest>0:
data = sock.recv(1024)
fd.write(data)
rest -= len(data)
fd.close()
sock.close()
put.py
#encoding=utf-8
import socket
import sys
if __name__=='__main__':
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((sys.argv[1], (int)(sys.argv[2])))
filename = sys.argv[3]
fd = open(filename, "rb")
fd.seek(0,2)
length = fd.tell()
fd.seek(0,0)
buf = "put %s %d/r/n/r/n"%(filename,length)
sock.send(buf)
rest = length
while rest>0:
buf = fd.read(1024)
rest -= len(buf)
sock.send(buf)
sock.close()
http://bbs.superlinux.cn/viewthread.php?tid=2559&extra=page%3D1&frombbs=1
分享到:
相关推荐
本篇文章主要介绍了python:socket传输大文件示例,具有一定的参考价值,有兴趣的可以了解一下,
发送端可以不停的发送新文件,接收端可以不停的接收新文件。 例如:发送端输入:e:\visio.rar,接收端会默认保存为 e:\new_visio.rar,支持多并发,具体实现如下; 接收端: 方法一: #-*- coding: UTF-8 -*- ...
主要介绍了python 使用socket传输图片视频等文件的实现方式,本文给出了实例代码,需要的朋友可以参考下
client.py为客户端 server.py为服务器端
python利用socket上传文件的客户端和服务器代码。代码比较简短,运行在Python3平台,本人测试过MP3问价和mp4文件,传输的效果很好。
python socket局域网聊天文件传输程序 ,界面用wxPython编写,实现多线程 ,跨平台,windows和linux下过行都可
基于 python 和 socket 的即时通讯软件,面向企业,兼具保密性、实用性与趣味性。这个项目基于 python 语言和 PyQt5 框架编写的软件,而且功能丰富,广受好评。- 客户端与服务端须在两个窗口打开(若是在同一个电脑...
python socket文件传输项目,带演示视频
因此socket在使用时也是完全符合这个哲学的,它涉及到listen()、bind()、accept()、write()/read()、close()等基本的类似于文件操作的功能函数。 上述Socket功能函数是从传输层协议TCP或者UDP中抽象出来的,一个基本...
同时使用的易语言自带的 打开内存文件方法来进行组包,之前也咨询了论坛打开内存文件的方法可以存储一个G的文件,但是我们可能也用不到那么大,最多也就几百mb我估计就够用了。可能我的分包组包不是最高效的,但是...
此文件用于语音在线传输,基于Python2.7,利用socket编程
主要介绍了python 通过 socket 发送文件的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
本文实例讲述了python使用socket实现的传输demo。分享给大家供大家参考,具体如下: socket传输,客户端代码 import socket def main(): tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ...
使用python实现socket的文件传输
此代码用Python语言实现了服务器到客户端和客户端到服务器的文件传输。
SOCKET传输视频
因此socket在使用时也是完全符合这个哲学的,它涉及到listen()、bind()、accept()、write()/read()、close()等基本的类似于文件操作的功能函数。 上述Socket功能函数是从传输层协议TCP或者UDP中抽象出来的,一个基本...
这是个小程序,只针对学习python的socket使用,基本功能:在服务端放一个文件,python服务端的文件需要放在和需要下载的文件在一个目录里面,在客户端输入get+空格+需要下载的文件名,下载的文件下载完成后,系统会...
python socket隧道转发,单工通信