我试图在服务器和客户端之间建立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;
}
});
答案 0 :(得分:2)
调用readLine()
是阻塞调用,意味着您的代码执行将被阻止,除非您从服务器通信中收到任何行。
使用System.Environment.NewLine
代替\n
来终止C#
代码中的行。