Java 通过套接字传输多个文件时出错
我创建了一个应用程序,其中一个设备必须向另一个设备发送2个txt文件 客户端(发送的客户端)的代码片段: 接收器/服务器的代码段:Java 通过套接字传输多个文件时出错,java,android,sockets,Java,Android,Sockets,我创建了一个应用程序,其中一个设备必须向另一个设备发送2个txt文件 客户端(发送的客户端)的代码片段: 接收器/服务器的代码段: private class ReceiveRequestedFileAsync extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { ServerSocket ser
private class ReceiveRequestedFileAsync extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
ServerSocket serverSocket = null;
Socket client = null;
InputStream in = null;
OutputStream out = null;
try {
Log.v("RequestedFileReceiveService", "Creating server socket");
serverSocket = new ServerSocket(8383);
client = serverSocket.accept();
in = client.getInputStream();
out = new FileOutputStream(Environment.getExternalStorageDirectory()+"/"+retrieveFileNameFromURL(getInsertedUrl()));
byte[] bytes = new byte[16*1024];
int count;
while ((count = in.read(bytes)) > 0)
{
out.write(bytes, 0, count);
}
out.close();
in.close();
client.close();
serverSocket.close();
return null;
} catch (IOException e) {}
return null;
}
@Override
protected void onPostExecute(String result)
{
_ReceiveRequestedFileAsync2 = new ReceiveRequestedFileAsync2();
_ReceiveRequestedFileAsync2.execute();
}
}
private class ReceiveRequestedFileAsync2 extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
ServerSocket serverSocket = null;
Socket client = null;
InputStream in = null;
OutputStream out = null;
try {
Log.v("RequestedFileReceiveService", "Creating server socket");
serverSocket = new ServerSocket(8484);
client = serverSocket.accept();
in = client.getInputStream();
out = new FileOutputStream(Environment.getExternalStorageDirectory()+"/skc"+retrieveFileNameFromURL(getInsertedUrl()));
byte[] bytes = new byte[16*1024];
int count;
while ((count = in.read(bytes)) > 0)
{
out.write(bytes, 0, count);
}
out.close();
in.close();
client.close();
serverSocket.close();
return null;
} catch (IOException e) {}
return null;
}
}
私有类ReceiveRequestedFileAsync扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…参数){
ServerSocket ServerSocket=null;
socketclient=null;
InputStream in=null;
OutputStream out=null;
试一试{
Log.v(“RequestedFileReceiveService”,“创建服务器套接字”);
serverSocket=新的serverSocket(8383);
client=serverSocket.accept();
in=client.getInputStream();
out=newfileoutputstream(Environment.getExternalStorageDirectory()+“/”+retrieveFileNameFromURL(getInsertedUrl());
字节[]字节=新字节[16*1024];
整数计数;
而((计数=in.read(字节))>0)
{
out.write(字节,0,计数);
}
out.close();
in.close();
client.close();
serverSocket.close();
返回null;
}捕获(IOE){}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果)
{
_ReceiveRequestedFileAsync2=新的ReceiveRequestedFileAsync2();
_ReceiveRequestedFileAsync2.execute();
}
}
私有类ReceiverRequestedFileAsync2扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…参数){
ServerSocket ServerSocket=null;
socketclient=null;
InputStream in=null;
OutputStream out=null;
试一试{
Log.v(“RequestedFileReceiveService”,“创建服务器套接字”);
serverSocket=新的serverSocket(8484);
client=serverSocket.accept();
in=client.getInputStream();
out=newfileoutputstream(Environment.getExternalStorageDirectory()+“/skc”+retrieveFileNameFromURL(getInsertedUrl());
字节[]字节=新字节[16*1024];
整数计数;
而((计数=in.read(字节))>0)
{
out.write(字节,0,计数);
}
out.close();
in.close();
client.close();
serverSocket.close();
返回null;
}捕获(IOE){}
返回null;
}
}
第一个文件传输成功,但当我尝试传输第二个文件时,出现以下错误:
01-17 22:23:44.882 25187-27460/com.android.python27 W/System.err: java.net.ConnectException: failed to connect to /192.168.49.10 (port 8484): connect failed: ECONNREFUSED (Connection refused)
01-17 22:23:44.892 25187-27460/com.android.python27 W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:124)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:163)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err: at java.net.Socket.startupSocket(Socket.java:590)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err: at java.net.Socket.tryAllAddresses(Socket.java:128)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err: at java.net.Socket.<init>(Socket.java:178)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err: at java.net.Socket.<init>(Socket.java:150)
01-17 22:23:44.882 25187-27460/com.android.python27 W/System.err:java.net.ConnectException:无法连接到/192.168.49.10(端口8484):连接失败:EconRefused(连接被拒绝)
01-17 22:23:44.892 25187-27460/com.android.python27 W/System.err:at libcore.io.IoBridge.connect(IoBridge.java:124)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err:at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err:at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:163)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err:at java.net.Socket.startupSocket(Socket.java:590)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err:at java.net.Socket.tryalladdress(Socket.java:128)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err:at java.net.Socket.(Socket.java:178)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err:at java.net.Socket.(Socket.java:150)
您创建了两台服务器(在两个不同的端口上)。但是,只有当第一台服务器接收到文件时,才能创建第二台服务器
在客户端,您创建直接发送两个文件的rwo客户端。我认为第二台客户端无法连接,因为第二台服务器尚未启动
话虽如此,我想知道你为什么使用两个端口。一台服务器可以处理多个客户端和文件传输。您可以创建两台服务器(在两个不同的端口上)。但是,只有当第一台服务器接收到文件时,才能创建第二台服务器
在客户端,您创建直接发送两个文件的rwo客户端。我认为第二台客户端无法连接,因为第二台服务器尚未启动
话虽如此,我想知道你为什么使用两个端口。一台服务器可以处理多个客户端和文件传输
01-17 22:23:44.882 25187-27460/com.android.python27 W/System.err: java.net.ConnectException: failed to connect to /192.168.49.10 (port 8484): connect failed: ECONNREFUSED (Connection refused)
01-17 22:23:44.892 25187-27460/com.android.python27 W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:124)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:163)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err: at java.net.Socket.startupSocket(Socket.java:590)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err: at java.net.Socket.tryAllAddresses(Socket.java:128)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err: at java.net.Socket.<init>(Socket.java:178)
01-17 22:23:44.902 25187-27460/com.android.python27 W/System.err: at java.net.Socket.<init>(Socket.java:150)