问题描述
我正在尝试通过 Python 套接字读取图像文件。我目前的尝试如下:
while True:
data = clientsocket.recv(1024)
receivedMessage = (data.decode(encoding='UTF-8')).strip()
if ("getFile" in receivedMessage):
f = open("test2.jpg","wb")
file_size = int(receivedMessage.replace('getFile',''))
# Message: e.g. getFile28049994
read_bytes = 0
print("READING FILE")
while file_size > read_bytes:
print("RECEIVING FILE")
bytes_read = clientsocket.recv(1024)
if not bytes_read:
print("END OF FILE")
print("CHECKPOINT") # this is never printed out
read_bytes = len(bytes_read)
#writing to file
该文件作为字节数组通过 Android 发送: 客户端类:
import android.content.broadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.util.Log;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ConnectException;
import java.net.socket;
import java.net.UnkNownHostException;
public class Client extends AsyncTask<String,Void,Void> {
private MainActivity activity;
private Exception exception;
private byte[] data;
private String dataString;
public Client(MainActivity activity,byte[] data){
this.activity = activity;
this.data = data;
}
public Client(MainActivity activity,String dataString){
this.activity = activity;
this.dataString = dataString;
}
protected Void doInBackground(String... command) {
try{
Socket client = new Socket(".....",50000);
PrintWriter out = new PrintWriter(client.getoutputStream(),true);
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
if (data != null){
out.print(data);
}
if (dataString != null){
out.println(dataString);
}
String receivedMessage;
if ((receivedMessage = in.readLine()) != null){
if (receivedMessage.equals("connectionSuccessful")){
Intent intent = new Intent();
intent.setAction("sendServerMessage");
intent.putExtra("msg",receivedMessage);
activity.sendbroadcast(intent);
}
Log.e("Debug",receivedMessage);
}
client.close();
} catch(UnkNownHostException e) {
Log.e("Exception","UnkNown host");
}
catch(ConnectException e) {
Intent intent = new Intent();
intent.setAction("sendServerMessage");
intent.putExtra("msg","connectionFailed");
activity.sendbroadcast(intent);
Log.e("Exception","No I/O"+e);
}
catch (Exception e){
Log.e("Exception",""+e);
}
return null;
}
}
以及客户端的执行:
new Client(activity,bytes).execute(); // bytes is a byte array (checked it)
知道为什么没有收到吗?是不是因为我调用了两次clientsocket.recv?我怎么能修复它?提前致谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)