2012-10-24 30 views
0

我正在制作一个具有基本聊天功能的Java小程序(您可以发送/接收消息)。我已经创建了一个单独的线程来处理客户端版本上的连接,并且服务器也为每个连接的客户端创建一个线程。PrintWriter不会发送我的字符串(TCP/IP)

在客户端我有一个while循环来读信息的run()方法

收到:

while (state == ConnectionState.CONNECTED) { 
    out.println("Hello Server"); 
    out.flush(); 
    String input = in.readLine(); 
    System.out.println(input); 
    if(input == null){ 
     connectionClosedFromOtherSide(); 
    } 
    else { 
     received(input); 
     System.out.println(String.format("Recieved something: %s", input)); 
    } 
} 

这里走出来的是我的PrintWriter,在我的BufferedReader。为了调试的目的,我把'你好服务器'放在这里。此代码工作正常,但问题是sendtext()方法:

synchronized private void sendText(String tosend) { 
    if(out != null && state == ConnectionState.CONNECTED){ 
     out.print(tosend); 
     out.flush(); 
     System.out.println(String.format("sending %s to server", tosend)); 
    } 
} 

出于某种原因,如果我调用这个方法,它没有收到在服务器端。 (但控制台确实显示它已发送)

任何人都可以请帮我解决这个问题吗?

+0

你可以把'out.print()'改成'out.println()'吗?您正在发送一些没有换行符的数据,而另一方则预计全行。 –

+1

你能展示更多类似于这个类的代码吗?你已经定义了sendText() – Vikram

+0

PrintWriter是什么意思?请包括声明和你如何创建实例 – amphibient

回答

1

客户端,每个

String input = in.readLine(); // read until newline 

应该是,在服务器端,通过

out.println(tosend); // print the newline expected by the client 

out.flush()平衡不发送一个换行符。

+0

是的,我不得不改变out.print(tosend); out.println(tosend);.感谢您的帮助! – Hihaatje

相关问题