Hello i have a client server program and the server side works while the client side is having some problems. The client prints out a message once it connects, but after some user input (which is not used yet) i get this error. The server prints out a text file with line numbers and sequence numbers(seq nums aren't quite right yet) and is supposed to send the line numbers, seq numbers and lines of text to the client.
Server:
public class STSServer {
/**
* @param args the command line arguments
*/
public static void main(String argv[]) throws Exception
{
String startLineFromClient;
String endLineFromClient;
String stringLineNumber;
String stringSeqNumber;
String test = "hello";
int convertStart;
int convertEnd;
int subtractStartEnd;
int temp;
int byteTransfer;
int lineNumber = 0;
int sequenceNumber;
ServerSocket welcomeSocket = new ServerSocket(6789);
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =
new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
try{
File myFile = new File("alice.txt");
FileReader fileReader = new FileReader(myFile);
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuffer stringBuffer = new StringBuffer();
String line;
startLineFromClient = inFromClient.readLine();
endLineFromClient = inFromClient.readLine();
convertStart = Integer.parseInt(startLineFromClient);
convertEnd = Integer.parseInt(endLineFromClient);
while((line = bufferedReader.readLine()) != null)
{
sequenceNumber = line.length();
System.out.print(lineNumber);
stringLineNumber = Integer.toString(lineNumber);
outToClient.writeBytes(stringLineNumber);
System.out.print(" ");
System.out.print(sequenceNumber);
stringSeqNumber = Integer.toString(sequenceNumber);
outToClient.writeBytes(stringSeqNumber);
System.out.print(" ");
System.out.print(line);
outToClient.writeBytes(line);
System.out.println("");
lineNumber++;
//stringLineNumber = Integer.toString(lineNumber);
//stringSeqNumber = Integer.toString(sequenceNumber);*/
// outToClient.writeBytes(test);
}
fileReader.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
Client: public class STSClient {
public static void main(String argv[])throws Exception
{
String startLine;
String endLine;
String lineNumber;
String seqNumber;
String line;
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("localhost", 6789);
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer =
new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
while (true)
{
System.out.println("+++++++++++++++++++++++++++++++++++++++++++++");
System.out.println("+++++++++++++++ Simple TCP Service (STS)+++++");
System.out.println("+++++++++++++++++++++++++++++++++++++++++++++");
System.out.println("Command allowed by the server for this client:");
System.out.println("download [starting line #] [ending line #]");
System.out.print("Command: ");
startLine = inFromUser.readLine();
endLine = inFromUser.readLine();
outToServer.writeBytes(startLine + '\n');
outToServer.writeBytes(endLine + '\n');
lineNumber = inFromServer.readLine();
seqNumber = inFromServer.readLine();
line = inFromServer.readLine();
System.out.print(lineNumber);
System.out.print(seqNumber);
System.out.print(line);
System.out.println("");
}
}
}
Error:
Exception in thread "main" java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:209)
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 stsclient.STSClient.main(STSClient.java:42)