我想在Eclipse中使用java做一個簡單的服務器和客戶端程序,但每當我運行程序兩個控制檯輸出null。我不知道爲什麼會發生這種情況。我讀到一個常見的問題是我已經創建了一個服務器實例,並且正在嘗試創建另一個實例,但我相信那不是問題。我也讀過,我可能沒有root訪問權限,並且需要使用高於1024的端口,所以我做了,而且我仍然有同樣的錯誤。Java套接字測試返回空值
Server代碼:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Socket_Server_Side {
public static void main(String [] args) throws Exception {
Socket_Server_Side server = new Socket_Server_Side();
server.run();
}
public void run() throws Exception {
ServerSocket SvrSocket = new ServerSocket(1025);
SvrSocket.setReuseAddress(true);
Socket socket = SvrSocket.accept();
InputStreamReader Ir = new InputStreamReader(socket.getInputStream());
BufferedReader Br = new BufferedReader(Ir);
String message = Br.readLine();
System.out.println(message);
if (message != null) {
System.out.println("Message succesfully sent and recieved!");
}
}
}
客戶端代碼:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class Socket_Client_Side {
public static void main(String [] args) throws Exception{
Socket_Client_Side client = new Socket_Client_Side();
client.run();
}
public void run() throws Exception {
Socket socket2 = new Socket("localhost", 1025);
PrintStream Ps = new PrintStream(socket2.getOutputStream());
Ps.println("Hello Server");
InputStreamReader Ir = new InputStreamReader(socket2.getInputStream());
BufferedReader Br = new BufferedReader(Ir);
String message = Br.readLine();
System.out.println(message);
}
}
這裏沒有'套接字測試'。您的客戶**打印**爲空,因爲它正在從已經被對等關閉的連接中讀取而沒有發送任何內容。 – EJP
儘管存在缺陷,但我不確定爲什麼這是一個可怕的問題......它具有易於編譯的代碼,並且至少是從未使用套接字編程的人的症狀。 – Makoto
你的代碼的一些注意事項:Java中的類名應該使用[PascalCase](https://pl.wikipedia.org/wiki/PascalCase)和變量shoud使用[camelCase](https://en.wikipedia.org/wiki /駱駝香菸盒)。 – Turing85