2013-05-21 2 views
1

Im пытается сделать tcp-соединение между сервером и клиентом. сервер запрограммирован на C# и cliend на Java ... Сервер работает отлично ... моя проблема в этом коде:Мое приложение (sever/client) заблокировано после использования Readline

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, потому что im не получает имя пользователя/пароль, полученные на выходе .. так что любая помощь?

это нить, отправьте сообщение с 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

Вы код C# посылаете строку с возвратом каретки/новой линией в конце? –

+1

Почему вы не пишете 'inFromServer.readLine()' внутри цикла while? Как вы узнаете, нет ли данных, которые нужно читать с сервера? –

+0

ive только что добавил поток, который отправил сообщение с сервера в C# .. ive работал 30 часов по этой проблеме, и я еще не разрешил .. Я обыскал весь интернет и не получил ответа .. поэтому я прибегаю к любой помощи .. im new с сетевым подключением – jolyTimePopCorn

ответ

2

вызова readLine() блокирует вызов, означает, что ваш выполнение кода не будет заблокирован до тех пор, пока вы не получите какой-либо линии от сервера связи.

System.Environment.NewLine вместо \n, чтобы завершить вашу линию в C#.

+0

thats wrong ... Нет флеша в C# для сокета .. и им уверен, что проблема в java ..! – jolyTimePopCorn

+0

Не заподлицо, но убедитесь, что вы отправили соответствующий символ окончания строки. –

+0

@ChrisStratton thats ture .. я положил «/ n» в конце, но также не работал ..! – jolyTimePopCorn

Смежные вопросы