gpt4 book ai didi

java - 客户端向服务器发送文件的新套接字

转载 作者:行者123 更新时间:2023-11-30 11:54:18 25 4
gpt4 key购买 nike

我有一个客户端,它向服务器发送一个文件并向服务器发送其他值。我设法传输了文件,但直到我关闭套接字后它才打开。所以我在客户端创建了另一个套接字只是为了发送文件,但服务器读取它就好像它是另一个客户端并增加了客户端数量并给了我一个异常说> 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);
}

最佳答案

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
}

关于java - 客户端向服务器发送文件的新套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5773507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com