我試圖創建一個簡單的客戶端/服務器套接字通信應用程序(聊天客戶端)。我花了無數個小時來看看如何解決這個問題,但仍然沒有運氣,我可以將消息發送到服務器,但我堅持將消息從服務器發送回客戶端。Java服務器套接字響應
我相信問題是我發送回來之後如何從服務器獲取消息,我刪除了我所擁有的是我無法工作的InputStreamReader。
Server.java
public class Server extends Thread {
@SuppressWarnings("unused")
private static Socket socket;
static int port = 1337;
static ObjectOutputStream output;
@SuppressWarnings("resource")
public static void main(String[] args) throws IOException{
ServerSocket ss = new ServerSocket(port);
System.out.println("Server started on port: " + port);
while(!Thread.interrupted()){
try {
Socket clientSocket = ss.accept();
DataInputStream dis = new DataInputStream(clientSocket.getInputStream());
PrintStream output = new PrintStream(clientSocket.getOutputStream());
String str = (String)dis.readUTF();
String[] split = str.split("-");
String subStringUsername = split[0];
String subStringMessage = split[1];
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("h:mm:ss a");
String formattedTimestamp = sdf.format(date);
System.out.println("Message from " + subStringUsername + ": " + subStringMessage + " - at " + formattedTimestamp);
output.flush();
output.println("Message received! Hello client!");
System.out.println("Reply sent");
output.flush();
//TODO create new thread handle new users instead of Thread sleep
//TODO chat commands and user ID/can't be existing user
Thread.sleep(500);
}
catch(Exception e){
System.out.println(e);
}
}
}
getMessage.java
public class GetMessage extends Thread {
public void run(){
while(true) {
InputStreamReader be = new InputStreamReader();
}
}
}
(我提前馬虎代碼道歉)這是我已經離開我刪除了所有的getMessage類在挫折中,我將getMessage作爲一個線程運行,我不知道這是最好的方法。我已經嘗試了10種方法從服務器獲取消息,但仍然沒有運氣,如果有人能指出我朝着正確的方向,我會非常感激。
不要爲馬虎代碼道歉結束。改進它,然後發佈它。 – rzymek
你爲什麼使用'DataInputStream'?客戶端是否也是一個使用'DataOuputStream'發送數據的Java程序?如果不是,那麼這可能不起作用,因爲'DataInputStream'旨在以編碼形式發送Java原始值,而不是通用數據。 –