我有一个客户端将一个文件发送到服务器并将其他值发送到服务器。我设法传输文件但是在我关闭套接字之前它没有打开。所以我在客户端另一个套接字只是为了发送文件,但服务器读取它就好像它是另一个客户端并增加了客户端号码并给了我一个例外,说> Socketexception:软件导致连接中止:套接字写入错误。这是客户端的代码,只有发送的新套接字,任何人都可以帮助我吗?提前感谢。
try
{
Socket sendSock=new Socket("localhost", 8080);
outC.println("AcceptFile,");
FileInputStream fis = new FileInputStream(p);
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
ObjectOutputStream oos = new ObjectOutputStream(sendSock.getOutputStream()) ;
oos.writeObject(buffer);
sendSock.close();
}
catch(Exception c)
{
System.err.println("exc" + c);
}
答案 0 :(得分:1)
tl; dr - 不要制作新的插座。只需包装输出流并将对象发送过来。
假设outC也是与服务器的连接,请执行此操作
outC.println("AcceptFile,");
FileInputStream fis = new FileInputStream(p);
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
ObjectOutputStream oos = new ObjectOutputStream(originalSocket.getOutputStream());
oos.writeObject(buffer);
这会将对象写入基础流。
现在在服务器端,你可以这样做
if(clientMessage.equals("AcceptFile,")) {
ObjectInputStream ois = new ObjectInputStream(clientSocket.getInputStream());
byte[] buffer = (byte[])ois.readObject();
// do what you will with that
}
答案 1 :(得分:0)
支持多个连接的问题在服务器端。我不知道你将如何从客户端解决该服务器行为。它在一个会话中不支持多个连接。