Исключение в потоке «основной» java.net.SocketException: сброс соединения –JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Исключение в потоке «основной» java.net.SocketException: сброс соединения –

Сообщение Anonymous »

Я создал простую программу клиент/сервер, в которой клиент берет файл из аргументов командной строки. Затем клиент отправляет файл на сервер, где он сжимается с помощью GZIP и отправляется обратно клиенту.

Серверная программа при первом запуске работает нормально и не выдает ошибок, но после запуска клиента я получаю ошибку.

Я получаю сообщение об ошибке, сообщающее, что соединение сброшено, и я перепробовал множество разных портов, поэтому мне интересно, что-то не так с моим кодом или временем, когда я закрыл потоки?

Будем благодарны за любую помощь!

РЕДАКТИРОВАТЬ — внесены изменения в обе программы.

Клиент:

import java.io.*;
import java.net.*;

//JZip Client

public class NetZip {

//Declaring private variables.
private Socket socket = null;
private static String fileName = null;
private File file = null;
private File newFile = null;
private DataInputStream fileIn = null;
private DataInputStream dataIn = null;
private DataOutputStream dataOut = null;
private DataOutputStream fileOut = null;

public static void main(String[] args) throws IOException {
try {
fileName = args[0];
}
catch (ArrayIndexOutOfBoundsException error) {
System.out.println("Please Enter a Filename!");
}
NetZip x = new NetZip();
x.toServer();
x.fromServer();

}

public void toServer() throws IOException{
while (true){
//Creating socket
socket = new Socket("localhost", 4567);
file = new File(fileName);

//Creating stream to read from file.
fileIn = new DataInputStream(
new BufferedInputStream(
new FileInputStream(
file)));

//Creating stream to write to socket.
dataOut = new DataOutputStream(
new BufferedOutputStream(
socket.getOutputStream()));

byte[] buffer = new byte[1024];

int len;
//While there is data to be read, write to socket.
while((len = fileIn.read(buffer)) != -1){
try{
System.out.println("Attempting to Write " + file
+ "to server.");
dataOut.write(buffer, 0, len);
}
catch(IOException e){
System.out.println("Cannot Write File!");
}
}
fileIn.close();
dataOut.flush();
dataOut.close();

}

}
//Read data from the serversocket, and write to new .gz file.
public void fromServer() throws IOException{

dataIn = new DataInputStream(
new BufferedInputStream(
socket.getInputStream()));

fileOut = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream(
newFile)));

byte[] buffer = new byte[1024];

int len;
while((len = dataIn.read(buffer)) != -1){
try {
System.out.println("Attempting to retrieve file..");
fileOut.write(buffer, 0, len);
newFile = new File(file +".gz");

}
catch (IOException e ){
System.out.println("Cannot Recieve File");
}
}
dataIn.close();
fileOut.flush();
fileOut.close();
socket.close();

}

}


Сервер:

import java.io.*;
import java.net.*;
import java.util.zip.GZIPOutputStream;

//JZip Server

public class ZipServer {

private ServerSocket serverSock = null;
private Socket socket = null;
private DataOutputStream zipOut = null;
private DataInputStream dataIn = null;

public void zipOut() throws IOException {

//Creating server socket, and accepting from other sockets.
try{
serverSock = new ServerSocket(4567);
socket = serverSock.accept();
}
catch(IOException error){
System.out.println("Error! Cannot create socket on port");
}

//Reading Data from socket
dataIn = new DataInputStream(
new BufferedInputStream(
socket.getInputStream()));

//Creating output stream.
zipOut= new DataOutputStream(
new BufferedOutputStream(
new GZIPOutputStream(
socket.getOutputStream())));

byte[] buffer = new byte[1024];

int len;
//While there is data to be read, write to socket.
while((len = dataIn.read(buffer)) != -1){
System.out.println("Attempting to Compress " + dataIn
+ "and send to client");
zipOut.write(buffer, 0, len);
}
dataIn.close();
zipOut.flush();
zipOut.close();
serverSock.close();
socket.close();
}

public static void main(String[] args) throws IOException{
ZipServer run = new ZipServer();
run.zipOut();

}

}


Сообщение об ошибке:

Exception in thread "main" java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:196)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
at java.io.DataInputStream.read(DataInputStream.java:100)
at ZipServer.(ZipServer.java:38)
at ZipServer.main(ZipServer.java:49)


Подробнее здесь: https://stackoverflow.com/questions/272 ... tion-reset
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»