关于TCPSERVER,请教大神们

jack1913 2012-08-13 09:05:39
我用服务端用的TCPSERVER接收数据。在内网测试时没有问题,可拿到外网上测试的时候,如果接收的数据量大,就自动断开连接了。怎么回事?有什么办法解决吗
...全文
149 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuihan20e 2012-08-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用楼主 的回复:
我用服务端用的TCPSERVER接收数据。在内网测试时没有问题,可拿到外网上测试的时候,如果接收的数据量大,就自动断开连接了。怎么回事?有什么办法解决吗

可能相关的端号没有在路由器中打开呀
[/Quote]
鸟,你又来胡说八道,如果端口没打开,根本不可能连接成功
shuihan20e 2012-08-17
  • 打赏
  • 举报
回复
数据量有多大?发的都是字符串吗?
山东蓝鸟贵薪 2012-08-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
我用服务端用的TCPSERVER接收数据。在内网测试时没有问题,可拿到外网上测试的时候,如果接收的数据量大,就自动断开连接了。怎么回事?有什么办法解决吗
[/Quote]
可能相关的端号没有在路由器中打开呀
fang 2012-08-13
  • 打赏
  • 举报
回复
看了你的收返回值是控件给你处理了,你的发你确认是发成功了吗?你发的数据大小和你发送返回的数据大小是不是一致的,你的收发数据大小是不是相等的,大数据包不处理这个肯定会出问题。
jack1913 2012-08-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

连接数不大<100,而发送量很大的应用,应该问题不大才对,并发不多,做好临界区即可,会不会是你的程序没有考虑数据包分割的情况?
比如客户端提交ABCDEFG
而服务器有可能收到的是 ABC DEFG,把一个数据包分2次触发事件了,这是必须考虑的,叫做粘包,
[/Quote]
    
FContext := AContext;
AContext.Connection.IOHandler.CheckForDisconnect(True, True);
Len := AContext.Connection.Socket.InputBuffer.Size;
while(not(AContext.Connection.IOHandler.InputBufferIsEmpty()))do
begin
// Frmdia.Memo1.Lines.Add((Msg));
Msg := Msg + AContext.Connection.Socket.ReadString(Len);
end;

上面是我接收数据的代码,问题出在哪?
jack1913 2012-08-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

连接数不大<100,而发送量很大的应用,应该问题不大才对,并发不多,做好临界区即可,会不会是你的程序没有考虑数据包分割的情况?
比如客户端提交ABCDEFG
而服务器有可能收到的是 ABC DEFG,把一个数据包分2次触发事件了,这是必须考虑的,叫做粘包,
[/Quote]那个粘包问题我该怎么解决呢?我是模拟一个HTTP服务器,做课程设计用,比较急
蓝色光芒 2012-08-13
  • 打赏
  • 举报
回复
连接数不大<100,而发送量很大的应用,应该问题不大才对,并发不多,做好临界区即可,会不会是你的程序没有考虑数据包分割的情况?
比如客户端提交ABCDEFG
而服务器有可能收到的是 ABC DEFG,把一个数据包分2次触发事件了,这是必须考虑的,叫做粘包,
jack1913 2012-08-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

外网和内网确实有很大的区别,这是很正常的现象,连接数大的应用建议使用IOCP,不过IOCP网上的例子、模型等,90%都写得很初级,考虑非常不够,得自己下翻工夫去研究。
[/Quote]谢谢你的回答。
不过我现在的问题不是连接数大,而是一次发送的数据量大,比如上万个字节,几百个字节没问题。请问这该怎么办?
蓝色光芒 2012-08-13
  • 打赏
  • 举报
回复
外网和内网确实有很大的区别,这是很正常的现象,连接数大的应用建议使用IOCP,不过IOCP网上的例子、模型等,90%都写得很初级,考虑非常不够,得自己下翻工夫去研究。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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