关于RSocket 的使用

caitian6 2008-01-10 03:32:00
我想建立个 与 PC机的SOCKET连接,参考了些资料,代码如下
_LIT(KConnectIP,"192.168.0.216");//

const int KConnectPort = 80;//

TRequestStatus iStatus = KRequestPending;

RSocket iSocket;


RSocketServ iSocketServ;

User::LeaveIfError(iSocketServ.Connect());

TInetAddr iAddress;
if (iAddress.Input(KConnectIP) == KErrNone)
{


User::LeaveIfError(iSocket.Open(iSocketServ, KAfInet, KSockStream, KProtocolInetTcp));

iAddress.SetPort(KConnectPort);

iStatus = KRequestPending;

iSocket.Connect(iAddress, iStatus);


}


iSocket.Close();
iSocketServ.Close();

模拟器总抱 E32User - CBase 90 错误
上网查了下,好象是内存泄露, 但别人的代码也是如此,怎么改啊???????
谢谢
...全文
338 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dyw 2008-01-11
  • 打赏
  • 举报
回复
Connect就是异步的,察看其SDK HELP。具体例子可参考下帖回复:
http://topic.csdn.net/u/20080104/16/789f02e5-b752-4b6e-bdfd-7c1c030b08ca.html
caitian6 2008-01-11
  • 打赏
  • 举报
回复
自己解决了 我把连接设置为 User::WaitForRequest(iStatus);
就不会出先内存泄露
我想问下:
为什么要设置为同步的,就不会出错了,我没有设置的话,难到是用的异步的方式连接的?
caitian6 2008-01-10
  • 打赏
  • 举报
回复
先谢谢各位的热心帮助
caitian6 2008-01-10
  • 打赏
  • 举报
回复
重新编译了程序,
是 iSocket.Connect(iAddress, iStatus); 这句抱的错

实际上, 上述代码已经能与服务器建立连接了 ,只是不能正常退出, 现在抱错是
EUser32-CBase 46
网上还是说内存泄露

请问 是不是要建立 Socket连接后,是不是还要做 读的工作,把缓冲区的内容给读出来
我的程序只是与 PC建立连接,并未做任何工作
anel 2008-01-10
  • 打赏
  • 举报
回复
Introduced in 6.0: The panic is raised as a result of a call to the Pop() and PopAndDestroy() static member functions of the CleanupStack class. The panic occurs when an the item to be popped is not the expected item.
anel 2008-01-10
  • 打赏
  • 举报
回复
可能什么地方写超界
dyw 2008-01-10
  • 打赏
  • 举报
回复
可能在执行Close方法前程序已经退出,从而导致资源泄漏。
dyw 2008-01-10
  • 打赏
  • 举报
回复
单步执行找到出错行。

3,119

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧