I am writing a simple Client Server program in java. Client sends a filename to server. Server receives it, then parses it and after parsing the filename it sends response to client wheather filename is correct or invalid.
In server, when it parses the filename it throws NullPointerException error.
Here is the code:
Server.java
:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketTimeoutException;
public class Server extends Thread {
private static int port;
private ServerSocket serverSocket=null;
private String ReceivedFilename=null;
private String ServerResponse=null;
public Server(int port) throws IOException {
serverSocket = new ServerSocket(port);
//serverSocket.setSoTimeout(20000);
}
public void run() {
while (true) {
try {
System.out.println("Waiting for client to send File name...");
Socket server = serverSocket.accept();
System.out.println("Connected to Client");
DataInputStream in = new DataInputStream(server.getInputStream());
ReceivedFilename = in.readUTF();
System.out.println("Received Filename: "+ReceivedFilename);
if(ReceivedFilename == "")
ServerResponse = "Filename is empty!";
else{
if(ServerResponse.indexOf(".bat") == ServerResponse.length()-4)
{
ServerResponse = "Correct file name provided.";
}
else
{
ServerResponse = "Invalid Filename! Server only accepts .bat files";
}
}
DataOutputStream out = new DataOutputStream(server.getOutputStream());
out.writeUTF(ServerResponse);
server.close();
} catch (SocketTimeoutException s) {
System.out.println("Socket timed out!");
break;
} catch (IOException e) {
e.printStackTrace();
break;
}
}
}
public static void main(String[] args) {
port = 9000;
try {
Thread t = new Server(port);
t.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Client.java
:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Client {
private static String serverName;
public static void main(String[] args) {
String sName = "localhost";
int port = 9000;
String Filename = "Scripts.bat";
try {
System.out.println("Connecting to Server");
Socket client = new Socket(sName, port);
System.out.println("Connected to Server");
OutputStream outToServer = client.getOutputStream();
DataOutputStream out = new DataOutputStream(outToServer);
System.out.println("Sending filename to Server");
out.writeUTF(Filename);
System.out.println("Filename sent");
InputStream inFromServer = client.getInputStream();
DataInputStream in = new DataInputStream(inFromServer);
System.out.println("Server says " + in.readUTF());
client.close();
} catch (IOException e) {
}
}
}
Following is the output and exception on Server:
Please help out.