Пустое сообщение при получении данных из сокета

Я пытаюсь подключиться к серверу UAP (используемому для отправки и получения сообщений USSD в Huawei), используя класс Socket, но возникает проблема при получении данных с сервера. Я могу правильно подключиться к серверу, а также могу отправлять данные на сервер, но у меня проблемы с получением данных.

Это мой код для подключения и отправки сообщения:

IPAddress ipAddress = IPAddress.Parse("127.0.0.1"); //server
IPEndPoint remoteEP = new IPEndPoint(ipAddress, 2020);

clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

clientSocket.Connect(remoteEP);

//bind to socket, here I send bind message
Bind();

и внутри функции Bind я вызываю метод receive для получения данных с сервера:

private static void receive()
{
    try
    {
        // Create the state object.
        StateObject state = new StateObject();
        state.workSocket = clientSocket;

        // Begin receiving the data from the remote device.
        clientSocket.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
            new AsyncCallback(receiveCallback), state);

    }
    catch (Exception ex)
    {
        Console.WriteLine("receive | " + ex.ToString());
    }

}//receive

Здесь вы можете увидеть мой журнал Wireshark при подключении, отправке данных и получении данных с сервера:

Журнал Wireshark

Но как видите, последние два сообщения от сервера выделены красным цветом, что означает проблему с получением данных от сервера. Также я не вижу поля data в деталях:

детали сообщения

Я действительно не знаю, в чем проблема, это проблема с сервером или нет? Должен ли я использовать другой клиент Socket для подключения и получения данных с сервера или нет?


person Afshin Mehrabani    schedule 04.08.2013    source источник
comment
Я использовал протокол UAP для отправки получения ussd-сообщения на английском языке, вы пробовали арабские сообщения? арабские сообщения отображаются в виде нескольких вопросительных знаков, подобных этому ??? по телефону, есть подсказки??   -  person MSUH    schedule 05.09.2013
comment
@MSUH Да, я отправляю арабские/персидские тексты через UAP, все, что вам нужно, это установить CodeScheme на 0x48 и закодировать строки в UTF-16.   -  person Afshin Mehrabani    schedule 23.10.2013
comment
Спасибо, проблема решена, возникла проблема на стороне поставщика услуг.   -  person MSUH    schedule 23.10.2013


Ответы (1)


Пакеты сброса TCP не являются частью протокола уровня вашего приложения, и ваше приложение не должно их видеть.

Что именно является неправильным поведением с вашим приложением, потому что с тем, что вы разместили, я не вижу никаких проблем.

person xaxxon    schedule 04.08.2013
comment
Не могли бы вы объяснить, что вы подразумеваете под TCP reset packets? - person Afshin Mehrabani; 05.08.2013
comment
ваши выделенные красным цветом записи из wirehark. Это пакеты RST ACK (посмотрите на свои скриншоты). Вы не должны видеть их в своем приложении. Также нет данных, связанных с ними. - person xaxxon; 05.08.2013