-3
我試圖製作一個服務器,可以發送和接收消息給多個客戶端。但我有問題,即客戶端甚至不發送消息到我想要的服務器。我沒有添加服務器的寫入部分,我現在只是試圖讓服務器從客戶端讀取消息。謝謝你的幫助。這裏是我的服務器和我的客戶:Java聊天服務器,可以讀取和寫入消息
public class Main {
public static ArrayList<PrintWriter> writers = new ArrayList<PrintWriter>();
public static void main(String[] args) {
try {
ServerSocket sock = new ServerSocket(9898);
while (true) {
try {
Socket client = sock.accept();
PrintWriter writer = new PrintWriter(client.getOutputStream());
writers.add(writer);
Thread t = new Thread(new Handler(client));
t.start();
}
catch (IOException e) {
e.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Server Started");
}
}
public class Handler implements Runnable {
private Socket client;
public Handler(Socket client) {
this.client = client;
}
@Override
public void run() {
try {
//Streams---------------------------------
OutputStream out = client.getOutputStream();
PrintWriter writer = new PrintWriter(out);
InputStream in = client.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
//----------------------------------------
String s = null;
while(true) {
if((s=reader.readLine()) != null) {
} System.out.println(s);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
公共類管理實現Runnable {
Socket sockel;
String pcname = System.getProperty("user.name");
BufferedReader reader;
PrintWriter writer;
@Override
public void run() {
try {
sockel = new Socket("localhost", 9898);
//Streams
reader = new BufferedReader(new InputStreamReader(sockel.getInputStream()));
writer = new PrintWriter(sockel.getOutputStream());
//--------------
System.out.println("Connected to: " + sockel.getInetAddress());
writer.write("hello");
writer.flush();
System.out.println("here");
String command = reader.readLine();
while(!command.equalsIgnoreCase("close" + pcname)) {
System.out.println("Got Message: " + command);
}
}catch(IOException e) {
e.printStackTrace();
}
}
}
尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建[mcve]。使用「編輯」鏈接來改善你的*問題* - 不要通過評論添加更多信息。謝謝! – GhostCat
你有沒有例外? – Berger
你就像「代碼不工作,這裏的代碼」...現在什麼?我們花時間閱讀您的代碼,或許正在運行,以確定*然後爲您解決問題是什麼問題?對不起,但這不是這個網站的工作原理。學習編程的整個想法是*花時間去理解問題並修復它們*。你正試圖把**所有這些麻煩的工作委託給其他人。並提示:* preview *功能存在的原因 - 以便您可以檢查您的輸入**的格式之前**發送給我們。 – GhostCat