服务端代码:
public class SimpleServerSocket {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(9809);
Socket client = server.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(client
.getInputStream()));
while (true) {
String recStr = reader.readLine();
System.out.println(recStr);
if ("End".equals(recStr))
break;
}
client.close();
System.out.println("Terminate...");
}
}
客户端代码:
public class SimpleSocket {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket client = new Socket(InetAddress.getLocalHost(),9809);
PrintWriter out = new PrintWriter(client.getOutputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while(true){
String inputStr = reader.readLine();
out.print(inputStr);
out.flush();

if("End".equals(inputStr))
break;
}
client.close();
}}
为什么就不行?输入以后服务端不打印,输入多次再输入End就出现很多null,只有第一次就输入End的时候反映正常。
郁闷。。

解决方案 »

  1.   


    -------------------------------------------------------------------
    服务器:
    BufferedReader reader = new BufferedReader(new InputStreamReader(client 
    .getInputStream())); 
    while (true) { 
    String recStr = reader.readLine(); // 也在等
    System.out.println(recStr); 
    if ("End".equals(recStr)) 
    break; 
    } // 有连接进来, 服务器没有主动发过一句话, 只是在等待客户端发消息过来.------------------------------------------------------------------
    客户端:
    PrintWriter out = new PrintWriter(client.getOutputStream()); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
    while(true){ 
    String inputStr = reader.readLine();  // 一直在等.
    out.print(inputStr); 
    out.flush(); if("End".equals(inputStr)) 
    break; 
    }  // 连接后, 就等待服务器发消息过来, 也没有主动发过消息.------------------------------------------------------------------
    都没有发过消息, 谁都没有发过消息, 都在等对方发, 当然有问题.
      

  2.   

    public class SimpleSocket { 
    public static void main(String[] args) throws UnknownHostException, IOException { 
    Socket client = new Socket(InetAddress.getLocalHost(),9809); 
    PrintWriter out = new PrintWriter(client.getOutputStream()); 
    BufferedReader reader;
    while(true){ 
    reader = new BufferedReader(new InputStreamReader(System.in)); 
    String inputStr = reader.readLine(); 
    out.print(inputStr); 
    out.flush(); if("End".equals(inputStr)) 
    break; 

    client.close(); 
    } } 
    客户端改成这样试试!
      

  3.   

    问题解决了,原来是客户端的问题:out.print(inputStr);改成out.println(inputStr);就正常了。
    弄了这么久。哭~还是谢谢两位高手的解答,我这代码貌似漏洞很多还望高手们指导。