gpt4 book ai didi

c++ - 关于在 symbian 中使用 TCP/IP 写入

转载 作者:行者123 更新时间:2023-11-28 04:00:32 24 4
gpt4 key购买 nike

void CSocket::WriteSocket()
{
TBuf8<2> KData (_L8("60"));
//RBuf8 KData;
RBuf8 aQuery;
aQuery.CleanupClosePushL();
aQuery.CreateL(100);
// <?xml version="1.0"?><AM><P/><A><CE/></A></AM>
_LIT8(KData1,"61");
//_LIT8(KData2,"20");
_LIT8(KData3,"A");
_LIT8(KData4,"<?xml version=\"1.0\"?><AM><P/><A><CE/></A></AM>");
TBuf8<100> buff,buff1;
buff.Copy(_L("<?xml version=\"1.0\"?><AM><P/><A><CE/></A></AM>"));
TInt len=buff.Length();
buff1.AppendNum(len);
aQuery.Append(KData1);
aQuery.Append(buff1);
// aQuery.Append(KData2);
aQuery.Append(KData3);
aQuery.Append(buff);
//iSocket.Send(KData,KExpeditedDataOpt,iStatus);
iSocket.Write((TDesC8)aQuery,iStatus);
User::WaitForRequest(iStatus);
}

我在 Symbian 上使用此代码与使用 Java 的服务器进行通信。

但问题是:数据没有到达服务器。它显示设备已成功连接。我在这段代码中做错了什么? TDes8 是否兼容 Java 中的纯文本?

最佳答案

TDes8 只是字节,如果 Java 端试图读取 ASCII,这很好,如果 Java 端期望 16 位 unicode(这是 Java 的 char 是什么),则不太好。但是,如果您正在读取另一端的套接字,那么即使它不兼容,您仍然会看到一些数据,只是不是您所期望的。与服务器通信的协议(protocol)应该指定字符集,而不管服务器是用什么语言实现的。

否则:

  • 它可以在模拟器上运行吗?
  • 您检查过 iStatus 是否有错误吗?通常,如果套接字连接,您可以写入它,但您永远不知道。
  • 服务器是否报告套接字已连接?您可能连接到了错误的主机或错误的端口。
  • 如果服务器确实读取了一些数据,但由于某种原因失败了,你知道吗?我想我是在问你是否也在调试另一端。如果不是,则可能是您的数据格式不正确,并且在另一端被忽略了。我想你要发送 6146A<?xml version="1.0"?><AM><P/><A><CE/></A></AM> .一些跟踪和/或数据包嗅探会告诉您这是否属实。
  • 以“a”开头的变量通常是一个参数:这是您的真实代码吗?如果不是,那么有关格式错误的数据的问题适用,并且您的调用者可能给您错误的信息。
  • 您可能希望在返回之前 PopAndDestroy aQuery,尽管这不会影响此问题。
  • 您的函数应该称为 WriteSocketL,因为它可以离开。

关于c++ - 关于在 symbian 中使用 TCP/IP 写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/919671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com