我想用java套接字做一個小例子。但我無法讓它工作。服務器正確接收客戶請求。但問題來了,當我試圖發送到服務器的字符串「你好」。java套接字服務器和套接字客戶端之間的連接
正如我調試,服務器中的InputStream爲空,所以它不會打印任何東西。我認爲這個問題必須在PrinterWriter,也許我應該使用另一個類,我想與其他班級一樣的BufferedWriter,但我不能使它工作
這裏是我的代碼
服務器
public class ServidorFechaHora {
static final int port = 5000;
static String line;
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ServerSocket ss = new ServerSocket(port);
while (true) {
/* accept nos devuelve el Socket conectado a un nuevo cliente.
Si no hay un nuevo cliente, se bloquea hasta que haya un
nuevo cliente.
*/
Socket soc = ss.accept();
System.out.println("Cliente conectado");
// Obtenemos el flujo de entrada del socket
InputStream is = (InputStream) soc.getInputStream();
//Función que llevaría a cabo el envío y recepción de los datos.
processClient(is);
}
}
private static void processClient(InputStream is) throws IOException {
// TODO Auto-generated method stub
BufferedReader bis = new BufferedReader(new InputStreamReader(is));
while ((line = bis.readLine()) != null){
System.out.println(line);
}
bis.close();
}
}
客戶
public class ClienteFechaHora {
public static void main(String[] args) throws IOException, InterruptedException {
Socket client = null;
PrintWriter output = null;
//BufferedOutputStream out = null;
DateFormat hourdateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
try {
client = new Socket("127.0.0.1", port);
output = new PrintWriter(client.getOutputStream(), false);
while (true) {
System.out.println("Enviando datos...");
output.write("hello");
output.flush();
Thread.currentThread().sleep(2000);
//System.out.println("Fecha y hora: " + hourdateFormat);
}
}
catch (IOException e) {
System.out.println(e);
}
output.close();
client.close();
}
}
提前感謝!
我只是檢查服務器以獲取數據我虛擬客戶端並且工作正常 –
服務器中的輸入流永遠不爲空。不清楚你在問什麼。 – EJP
EJP正如我所說的,我試圖從客戶端向服務器發送字符串「hello」,並將其顯示在名爲「processClient」的服務器方法中。我認爲我很清楚,即使只是閱讀說明或代碼,我也會試着去做。請,下次更仔細閱讀,而不是給我負面的觀點。 :) – Javi