2013-08-04 46 views
1

接收数据我试图连接到服务器UAP(用于华为发送和接收USSD消息)使用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 log

但你可以看到,从服务器最后两个消息都用红色,这意味着有从服务器接收数据的问题突出。此外,我没有看到细节data领域:

detail of a message

我真的不知道有什么问题,这是服务器有问题或不?我应该使用另一个套接字客户端来连接并从服务器接收数据吗?

+0

我用UAP协议发送英文的接收ussd消息,你试过阿拉伯语的消息吗?阿拉伯文消息显示为几个像这样的问号?在电话中,任何线索? – MSUH

+0

@MSUH是的,我通过UAP发送阿拉伯文/波斯文本,您只需将CodeScheme设置为0x48并以UTF-16编码字符串。 –

+0

谢谢,它解决了,有关于服务提供商侧 – MSUH

回答

0

TCP重置数据包是不是你的应用级协议的一部分,你的应用程序不应该期望看到他们。

到底什么是您的应用程序不正确的行为,因为你张贴的东西,我没有看到任何问题。

+0

一些问题,能否请您解释一下什么叫'TCP重置packets'是什么意思? –

+0

来自wireshark的红色突出显示的条目。他们是RST ACK数据包(看你的截图)。你不应该看到你的应用程序中的那些。也没有与它们相关的数据。 – xaxxon