[英]Server-Client JAVA socket programming error
我是socket編程的新手,想要創建一個發送數字的客戶端,服務器返回客戶端發送的數字的倍數。 我首先運行服務器然后運行客戶端。 我正在輸入值,但沒有得到服務器的任何響應。 以下是我的客戶端和服務器代碼。
服務器代碼
try
{
ServerSocket ss=new ServerSocket(4000);
while(true)
{
Socket sock=ss.accept();
InputStreamReader isr=new InputStreamReader(sock.getInputStream());
BufferedReader br=new BufferedReader(isr);
String num=br.readLine();
try
{
int n=Integer.parseInt(num);
n=n*2;
String ret=String.valueOf(n);
PrintWriter writer=new PrintWriter(sock.getOutputStream());
writer.println(ret);
writer.close();
}
catch(IOException ex)
{
System.out.println("Enter a number!");
}
}
}
catch(Exception ex)
{
System.out.println("Error");
}
客戶代碼
try
{
Socket s=new Socket("127.0.0.1",4000);
String st;
PrintWriter pw=new PrintWriter(s.getOutputStream());
InputStreamReader isr=new InputStreamReader(s.getInputStream());
BufferedReader br=new BufferedReader(isr);
InputStreamReader is=new InputStreamReader(System.in);
BufferedReader in=new BufferedReader(is);
st=in.readLine();
pw.println(st);
st=br.readLine();
System.out.println("the server says: "+ st);
}
catch(IOException ex)
{
ex.printStackTrace();
}
請建議我要遵循的步驟,因為我沒有從服務器獲得任何輸出。
問題在於客戶端代碼的這一部分,它通過pw
發送st
,然后聲明st
是服務器的輸出。
pw.println(st);
System.out.println("the server says: "+ st);
您應該能夠通過br
解決實際從服務器獲取值的問題。 你還需要沖洗pw
:
pw.println(st);
pw.flush();
st = br.readLine();
System.out.println("the server says: "+ st);
或者,您可以像這樣進行pw
自動刷新:
PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
// ...
pw.println(st);
st = br.readLine();
System.out.println("the server says: "+ st);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.