Я только начал изучать программирование и хотел создать чат в java, куда вы можете отправлять файлы и т.д. c. Когда я попытался создать передачу файлов, я получил эту ошибку
java.net.SocketException: Socket closed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:170)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:161)
at java.io.BufferedReader.readLine(BufferedReader.java:324)
at java.io.BufferedReader.readLine(BufferedReader.java:389)
at lab03.ReadThread.run(ReadThread.java:26)
BUILD STOPPED (total time: 16 seconds)
вот мой код клиента:
Thread socketReader = new ReadThread(socket);
socketReader.start();
Scanner scanner = new Scanner(System.in);
boolean files =false;
String s="";
while(true){
if(files)
{
File file = new File("C:\\Users\\Kostar\\Desktop\\asd.txt");
long length = file.length();
byte[] bytes = new byte[16 * 1024];
InputStream in2 = new FileInputStream(file);
OutputStream out2 = socket.getOutputStream();
int count;
while ((count = in2.read(bytes)) > 0) {
out2.write(bytes, 0, count);
}
out2.close();
in2.close();
files=false;
}
else
{
s=scanner.nextLine();
if(s.startsWith("/sf"))
{
files=true;
out.println(s);
}
else
out.println(s);
}
}
}catch(Exception ex){ex.printStackTrace();}
И ReadThread:
public ReadThread(Socket socket) throws IOException{
this.socket = socket;
this.in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
this.out = new PrintStream(socket.getOutputStream());
}
String s="";
public void run() {
try{
while(true){
s=in.readLine();
System.out.println(s);
}
}catch(Exception ex){ ex.printStackTrace();
}finally{
Close();
}
}
public void Close(){
try{
in.close();
out.close();
socket.close();
}catch(Exception ex){ ex.printStackTrace();}
}
В основном После этого создается файл, и в нем есть все, что должно быть, но, как вы можете видеть, клиент отключается, а сервер получает NULL. Может кто-нибудь помочь мне? Я знаю, что вставка стены кода не очень полезна / приятна, но я думаю, что мне пришлось