我有一个python 2.7服务器和一个Android应用程序。我所做的是:将一个URL作为字符串发送到服务器,将其转换为PDF文件,然后我想将此文件发送到我的Android应用程序。问题是在Android应用程序我认为,我发送文件没有问题从服务器,但当我尝试在Android上打开它是空的(0字节文件)...
Python服务器代码:
class ThreadedServer(object):
def __init__(self, host, port):
self.host = host
self.port = port
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.sock.bind((self.host, self.port))
def listen(self):
self.sock.listen(5)
while True:
client, address = self.sock.accept()
client.settimeout(60)
threading.Thread(target = self.listenToClient,args = (client,address)).start()
def listenToClient(self, client, address):
size = 1024
try:
data=client.recv(size)
/*code to convert URL into PDF*/
/*output file to send is out.pdf*/
fl=open("out.pdf")
print fl.name
while True:
chunk = file.read(fl)
if not chunk:
break
client.sendall(chunk)
except Exception, e:
print str(e)
client.close()
if __name__ == "__main__":
ThreadedServer('',4095).listen()
Android类传输文件:
public class Conversione extends AsyncTask<String, String, File> {
@Override
protected File doInBackground(String... params) {
String s=params[0],fl=null;
BufferedOutputStream scrivi=null;
Socket ss;
try {
ss = new Socket(InetAddress.getByName("192.168.1.8"),4095);
scrivi = new BufferedOutputStream(ss.getOutputStream());
scrivi.write(s.getBytes());
scrivi.flush();
File file = new File(Environment.getExternalStorageDirectory(),"/MyReader");
if(!file.exists())
file.mkdir();
fl= Environment.getExternalStorageDirectory().toString()+"/MyReader/out.pdf";
byte[] buffer = new byte[1024];
int lenght;
InputStream is = ss.getInputStream();
OutputStream os = new FileOutputStream(fl);
while((lenght=is.read(buffer))>0){
os.write(buffer,0,lenght);
}
os.close();
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
File f=new File(fl);
return f;
}
}
我不知道为什么这不起作用,有人可以帮助我吗?