TServerSocket自定义通讯(二进制数据)问题

zhouxm0521 2005-10-13 02:30:29
我现在想做一个通讯程序,大约30来个客户端,客户端连接后将自己的数据大约每1s的速度发送一个数据包到服务器(最大2k 最小 几百byte),我们用TServerSocket及TClientSocket完成该功能,TServerSocket用的是stNonBlocking模式,但现在发现总是会有一些问题,请教各位,是否stNonBlocking模式不适合这种情况,请高手指点,顺带问一下,哪位有现成的例子(阻塞和非阻塞的都可),给发一个。多谢了!
...全文
256 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouxm0521 2005-10-17
  • 打赏
  • 举报
回复
怎么登陆不上去这个网站,好像有问题!
zjsyw 2005-10-14
  • 打赏
  • 举报
回复
gz
netsys2 2005-10-14
  • 打赏
  • 举报
回复
不知道要捕获什么事件能够及时得到客户端断开连接?
一般在这里:
//---------------------------------------------------------------------------
void __fastcall TFrmMain::ServerClientDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::ServerClientError(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
}

但有时对方客户端拆线信息也无法传给SERVER,因此SERVER端一般要用定时心跳
信号来检查某连接的有效性。

也不知道如果每个客户端都出现该情况后(包阻塞到客户端)同时发送服务器能否没有问题

----》没有问题,TCP能够保证你数据接收完整,如果SERVER处理不过来。TCP的接收
窗口会有限制,表现为CLIENT不能发出。
zhouxm0521 2005-10-14
  • 打赏
  • 举报
回复
在连接的时候,有的客户端在服务器端能同时有两个连接(关闭客户端后或关闭连接后再次连接),不知道要捕获什么事件能够及时得到客户端断开连接?还有我们的客户端是每1S生成一个数据包,如果断网后,可能有很多包没有发送出去,一旦连通后就每次100个包地发送到服务器,所以有时候服务器可能同时和几个这种的客户端通讯。也不知道如果每个客户端都出现该情况后(包阻塞到客户端)同时发送服务器能否没有问题
zsp5869999 2005-10-14
  • 打赏
  • 举报
回复
www.51merit.com
上有

WINSOCK LAN传文件(倚天篇)
WINSOCK史上最经典的例子(屠龙篇)
的源代码!
qq:42872272
zhouxm0521 2005-10-14
  • 打赏
  • 举报
回复
多谢netsys2(来电)热心帮助,先谢谢了,
netsys2 2005-10-13
  • 打赏
  • 举报
回复
stNonBlocking模式没有什么问题。

这里有一些讨论:

http://community.csdn.net/Expert/TopicView.asp?id=4317435

1,317

社区成员

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

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