我有一个问题,我学习了如何使用套接字,我用下一个代码编写了程序:
import java.net.*;
import java.io.*;
import java.util.*;
public class Client extends Thread{
public static void main(String args[])
{
try
{
Socket s = new Socket(args[0],Integer.parseInt(args[1]));
BufferedReader br=new BufferedReader(new InputStreamReader(System.in,"CP866"));
String str;
str=br.readLine();
str = str+"\n"+s.getInetAddress().getHostAddress()
+":"+s.getLocalPort();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
pw.println(str);
pw.flush();
while(true){
str=null;
if((str=br.readLine())==null)
break;
str = str+"\n"+s.getInetAddress().getHostAddress()
+":"+s.getLocalPort();
System.out.println(str);
pw.print(str);
pw.flush();
}
}
catch(Exception e)
{System.out.println("init error: "+e);}
}
}
服务器端程序只打印获取的消息,第一条消息正常打印,但下一条消息打印格式为:,当我切25-26行时 - 未发送或未获取消息。
为什么?
答案 0 :(得分:1)
你写了print(str);
。所以你不打印换行符(\ n)。您的服务器端也使用BufferedReader(我会使用)。他正在阅读直到换行。
所以改为println(str);