這是我從未想到的問題。我問過很多人,他們甚至都不知道。無論如何,讓我們來解決這個問題。這就是我試圖做的......創建一個客戶端和一個服務器。客戶端連接到服務器,並每3分鐘發送一條消息(我減少了測試時間)。必須有兩個獨立的線程(一個用於客戶端和服務器)。但是我發現了,客戶端將繼續發送郵件,但該服務器將在端口1234服務器套接字斷開並停止監聽
客戶不再聽:
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
public Client(){
startClient();
}
public void startClient(){
new Thread(new Runnable(){
@Override
public synchronized void run(){
try{
Socket sendChat = new Socket("localhost", 1234);
PrintWriter writer = new PrintWriter(sendChat.getOutputStream());
while(true){
Thread.sleep(1000); // normally 180000
writer.println("Hello Server!");
}
}catch(Exception err){
err.printStackTrace();
}
}
}).start();
}
}
服務器:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
public class Server {
public Server(){
startServer();
}
public void startServer(){
new Thread(new Runnable(){
@Override
public synchronized void run(){
try{
@SuppressWarnings("resource")
ServerSocket server = new ServerSocket(1234);
while(true){
final Socket test = server.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(test.getInputStream()));
while(!test.isClosed()) {
Date date = new Date();
System.out.println("Server got message from client " + date);
}
reader.close();
}
}catch(Exception err){
err.printStackTrace();
}
}
}).start();
}
}
開始:
public class Start {
public static void main(String[] args){
new Server();
new Client();
}
}
我將不勝感激,如果有人能告訴我什麼是錯的,因爲我老實說沒有clu即
因此... *當服務器停止收聽時*有沒有錯誤信息? –
@Emest跑步時沒有例外。這正是發生的情況。服務器和客戶端對象被創建。客戶端發送消息,服務器響應。客戶端發送另一條消息,服務器不響應。 – Jaccob