Клиент Java TCP не получает сообщения, отправленные с сервера C # - PullRequest
0 голосов
/ 22 октября 2011

Я пишу TCP-сервер в C # и соответствующий клиент в Java.Я тестирую соединение на локальном хосте, и клиент может подключиться к серверу.Однако когда я отправляю сообщения, клиент никогда их не получает.Используя отладчик, я убедился, что stream.Write (...) выполняется.Любая идея, в чем может быть проблема?

Это сервер C #:

        TcpClient client = (TcpClient)cl;
        NetworkStream stream = client.GetStream();

        byte[] msg = new byte[512];
        int bytesRead; 

        while (running)
        {
            while (messages.getCount() > 0)
            {
                String msg = messages.Take();

                if (cmd != null)
                {
                    byte[] bytes = Encoding.UTF8.GetBytes(msg.ToCharArray());

                    try
                    {
                        stream.Write(bytes, 0, bytes.Length);
                        stream.Flush();
                    }
                    catch (Exception e)
                    {

                    }
                }
            }

            Thread.Sleep(1000); 
        }

И клиент Java:

public void run() 
{
    try 
    {
        socket = new Socket(address, port);
        in = new BufferedReader( new InputStreamReader( socket.getInputStream() ));
        out = new PrintWriter(socket.getOutputStream());
        running = true;
    } 
    catch (Exception e){
        e.printStackTrace();
        running = false; 
    } 

    String data;
    while(running)
    {
        try 
        {
            data = in.readLine();

            if(data != null)
            {
                processData(data);
            }
        } 
        catch (IOException e) 
        {
            e.printStackTrace();

            running = false; 
            break;
        }
    }

    try 
    {
        socket.close();
        socket = null;
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
    }

    running = false; 
}

1 Ответ

5 голосов
/ 22 октября 2011

Вы используете BufferedReader.readLine().Строки вашего сообщения завершаются CR, LF или CR / LF?

readLine блокируется, пока не будет прочитан символ конца строки.

...