使用Readline后,我的应用程序(服务器/客户端)被阻止

时间:2013-05-21 13:17:57

标签: c# java sockets bufferedreader

我试图在服务器和客户端之间建立TCP连接。服务器是在c#和cliend上编程的java ...服务器工作正常...我的问题在于此代码:

try {
  InetAddress address = InetAddress.getByName("127.0.0.1");
  connection = new Socket(address, port);        
  BufferedReader inFromServer = new BufferedReader(
         new InputStreamReader(connection.getInputStream()));
  loginInfo = inFromServer.readLine();
  System.out.println("username/pass are  received");
  System.out.println(loginInfo);
  connection.close();
} catch (IOException f) {
  System.out.println("IOException: " + f);
} catch (Exception g) {
  System.out.println("Exception: " + g);
}

应用程序被阻止,我无法再关闭它......直到我从java完成调试。 我想问题是在loginInfo中,因为我没有收到用户名/传递在输出中收到..所以任何帮助?

这是从c#发送消息的线程:

Thread listener_service = new Thread((ThreadStart)delegate
{
  listener.Start();
  while (true)
  {
    s = listener.AcceptSocket();
    Console.WriteLine("Connected to !" + s.RemoteEndPoint);
    ASCIIEncoding asen = new ASCIIEncoding();
    s.Send(asen.GetBytes("The string was recieved by the server. \n"));
    Console.WriteLine("\nSent Acknowledgement");
    continue;
  }
});

1 个答案:

答案 0 :(得分:2)

调用readLine()是阻塞调用,意味着您的代码执行将被阻止,除非您从服务器通信中收到任何行。

使用System.Environment.NewLine代替\n来终止C#代码中的行。