Socket 数据接收的问题..

Beginner_mine 2006-04-22 08:30:01
用TServerSocket做了个Socket Server,一直工作正常.
最近遇到一个很奇怪的问题,请高手指点下.

现在Socket 接收的是两种数据,一种是实时数据,一种是历史数据.
实时数据和历史数据的差别就在于实时数据是两条记录,历史记录只有一条记录,但实时数据
的第二条记录格式与历史记录一模一样.

Socket 接收实时数据时,不管压力多大,都能正常接受.但接受历史数据时,接收到600多条记录的时候就要报错.现在把接收历史数据的后期处理函数都注释掉.
只在TServerSocket的OnClientRead事件中用Socket->ReceiveBuf来接收.但还是要报出Socket error 10038 - Socket operation on non-socket .
非常不解..请高手指点...
...全文
477 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
huaqglxy2004 2006-04-27
  • 打赏
  • 举报
回复
你看一看SOCKET有没有 断开了
应该不可能的
我可以接收上万条也没有出问题呀
铖邑 2006-04-24
  • 打赏
  • 举报
回复
想不出问题出在哪里。这个模拟发送端有点奇怪,你可不可以自己写一个发送端来试试。
Beginner_mine 2006-04-24
  • 打赏
  • 举报
回复
up一下..
谢谢啊
铖邑 2006-04-23
  • 打赏
  • 举报
回复
仅从楼主描述的这些现象,还无法判断问题出在哪里。
Beginner_mine 2006-04-23
  • 打赏
  • 举报
回复
现在的发送的确很快.40个用户,每个用户1秒种发送一条记录.\
关键的问题在这里,我也同样是40个用户,1秒种发送一次实时记录(两条记录,第二条记录内容
格式跟历史记录一模一样,测试用).没任何问题.照理说这个也应该报10038出来,但没有,所以很不解..这个模拟发送端只有一个可执行程序.没原码,所以得不到发送函数的返回值.
但Socket->ReceiveBuf的返回值报错前一直是0,因为我用一个循环来取这个数据的
while(Socket->ReceiveBuf(Buff,SIZE_MAX/10)!= -1)
{
//这里已经全部注释掉..
}
就跳不出这个循环,但根据ReceiveBuf的help,当没数据时,返回是-1,不加!=0这个条件,就一直跳不出这个循环,现在改成这样.
while((nReceive = Socket->ReceiveBuf(Buff,SIZE_MAX/10))!= -1 && nReceive != 0)
{
//这里已经全部注释掉..
}
但还是要报错.error 10038....



铖邑 2006-04-23
  • 打赏
  • 举报
回复
发送太快???你检查一下发送函数的返回值
Beginner_mine 2006-04-23
  • 打赏
  • 举报
回复
现在情况是这样,本机发历史数据本机收,没任何问题,但只要通过网络来发历史数据,就是发送端与接受端不在同一机器上,当接收到一定数据量以后就要报错.Socket error 10038 - Socket operation on non-socket .但发实时数据就没任何问题...
实在不解.....
望高手指点一二....

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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