0
我在運行服務器客戶端程序時遇到問題。當我運行我的服務器程序時,它會繼續運行,永遠不會結束。另一方面,當我運行我的客戶端程序時,它會拋出一個異常,如下所示(我的防火牆關閉)。服務器客戶端異常
答覆將不勝感激。由於
//Client Code
import java.io.*;
import java.net.*;
public class DailyAdviceClient
{
public void go()
{
try {
Socket s = new Socket("127.0.0.1", 4242);
InputStreamReader read = new InputStreamReader(s.getInputStream());
BufferedReader z = new BufferedReader(read);
String advice = z.readLine();
System.out.println("today you should" + advice);
z.close();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
public static void main(String[] args)
{
DailyAdviceClient x = new DailyAdviceClient();
x.go();
}
}
//Server Code
import java.io.*;
import java.net.*;
public class DailyAdvisor
{
String[] advicelist = { "take your time", "be patient",
"don't be diplomatic", " life is really short", "try to fix things" };
public void go()
{
try
{
ServerSocket s = new ServerSocket(4242);
while (true)
{
Socket m = s.accept();
PrintWriter writer = new PrintWriter(m.getOutputStream());
String advice = getAdvice();
writer.println(advice);
writer.close();
writer.flush();
System.out.println(advice);
}
} catch (IOException ex)
{
ex.printStackTrace();
}
}
private String getAdvice()
{
int random = (int) (Math.random() * advicelist.length);
return advicelist[random];
}
public static void main(String[] args)
{
DailyAdvisor x = new DailyAdvisor();
x.go();
}
}
你真的需要在每行之前完整的換行符嗎? –
'while(true)'在服務器端創建一個永無止境的循環。你沒有告訴,什麼時候從'while'循環中斷開。 – Smit
在運行客戶端之前,您能否確認您的服務器正在監聽端口? (看看'netstat') – Grambot