捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
 
广告
评论:Boost ASIO for delphi的高效率稳定封装通讯框架
rainbow57 42251 2012/3/24 0:13:39
难得的Socket程序,所以仔细研究了一番,不过很遗憾不能用到项目里去。除了我上面说的,不能客户端和服务端同时在一个程序里出现(也许是我没找到方法)。另外一个原因是,发现端口检测有数据进来,但程序没反应。跟着以后发现,CurrPos是在变的,Memroy.Position也是在变的,但为什么不执行Oncase过程没找到原因。

另外,最新版的对象释放,楼主把之前的那些代码去掉了,只留了两个Free在那边,虽然不会报错,但有内存泄漏。
286251099 42219 2012/3/18 22:22:05
怎么屏蔽 有评论的邮件提示
rainbow57 42218 2012/3/18 14:06:20
mmzmagic 很感谢你写了这个代码并拿出来共享,对我这种粗涉通讯的人真是莫大的福音。我从中也学到了很多。
目前我有两个疑问,一个是这个程序的服务端,启动是看端口的,并没有指定IP,就是监听的0.0.0.0的某端口,那对于多网卡并且在不同网段上的会不会有问题呢?

另外一个是,似乎这个程序,不能在同一电脑上开两个不同端口的服务器,也不能客户端(客户端连的是别处)和服务器端同时开,不知道是不是我使用上的问题。还望指点
carcode 42187 2012/3/13 21:58:36
mmzmagic,可以写个文档,我们可以共同来完善
chinaz 42165 2012/3/4 15:02:09
感谢作者的无私
mmzmagic 42140 2012/2/21 10:52:37
呵呵 更新啦!
重新通过gcc编译boost,从此告别附带的可恶的vs20xx运行时库(2个dll) : )
重写客户端,移植dxsock到单文件中
解决服务端偶尔的异常问题
解决客户端不能断开的问题
zhangjianbo 42124 2012/2/10 11:40:07
希望能更新至Delphi XE2
maltel 42099 2012/2/4 9:44:27
好久没更新了,希望作者快点更新一下哦。
fenglaile 42072 2012/1/15 22:21:49
不知道如果用TIDTCPClient连接有没有问题
limin715814 42062 2012/1/11 13:23:48
这样的风云认为,原来是JYD人啊. 我正在苦读你的网管代码啊
dacong 42056 2012/1/5 21:17:09
很久没更新了
dunken 42000 2011/12/3 18:21:06
顶一个
nnyxm 41976 2011/11/22 1:59:40
服务端的内存不释放问题不知道该怎么处理?
xchen 41968 2011/11/17 22:29:11
To: NN2nn
你的这个结论在几年前我就验证了,后来也有做了改进,但效果不好,有时能连接有时连结不上,就是连接上也不太稳定,后来我无奈放弃,今天又看到,虽然点对点非常好,呵呵,看来也只能期望通讯设备制造商了,其实这个真正纯点对点靠我们几个穷酸程序员是不行的,呵呵
carcode 41892 2011/10/7 12:51:05
建议,整合到DataSnap架构上,方便,实用,统一
nn2nn 41887 2011/10/3 8:40:49
网络连接测试结果:
(只是有限测试)
环境一:
服务端:ADSL直接上网。
客户端:ADSL+路由器上网。
结果:客户端不能连接服务器。
环境二:
服务端:ADSL+路由器上网。(路由器设置成对本机直通方式“DMZ主机”)。
客户端:ADSL直接上网。
结果:客户端能正常连接服务器。

结论:现在很多用户环境是环境一的方式了,希望改下一下!
newshenliang 41866 2011/9/20 11:26:45
DelphiXE 编译因为字符集的问题报错:
function TRmoHelper.ConnetToSvr(ISvrIP: string; ISvrPort: Word): Boolean;
var
  LSql: string;
begin
  try
    if IsLegalIP(ISvrIP) = false then
      HostToIP(ISvrIP, ISvrIP);
[DCC Error] UntRemSql.pas(199): E2033 Types of actual and formal var parameters must be identical

      2: begin //聊天
          Llen := ClientThread.Socket.Readinteger();
          ls := ClientThread.Socket.ReadStr(Llen);
          lspit := TStringList.Create;
          //找到要发送的客户端
          try
          ExtractStrings(['|'], [' '], PansiChar(ls), lspit);
[DCC Error] UntRmodbSvr.pas(100): E2010 Incompatible types: 'PWideChar' and 'PAnsiChar'
mmzmagic 41828 2011/9/5 22:44:38
e...  十分感谢大家的关注和支持, 特别感谢hexi 指出的BUG,我会更新到SVN上,由于最近工作比较忙,过一段时间不忙后我会继续更新本库,还望大家继续支持 呵呵。
hexi 41827 2011/9/5 16:49:32
bug:
在单元utASIOSvr.pas中:
procedure Asio_writeDataCallback(Iuserdata, iuser2: integer); stdcall;
函数内
if Assigned(GIntAsioTCP.FOnClientRecvData) then
  GIntAsioTCP.FonClientSendData(Lci, nil, TPoolItem(iuser2).FMem.Position);
应该改为:

if Assigned(GIntAsioTCP.FOnClientSendData) then
  GIntAsioTCP.FonClientSendData(Lci, nil, TPoolItem(iuser2).FMem.Position);
hexi 41826 2011/9/4 14:22:20
楼主通过Boost::asio,实现IOCP是个很不错的想法。
不过这个程序还有很多Bug,比如内存溢出漏洞很多地方都存在。
尤其是CopyMemory函数,没有做边界检查。

建议改为:
destructor TAsioThreadPool.Destroy;
var
  i: Integer;
begin
  FLock.Free;
  for i := 0 to FThreadLst.Count - 1 do begin
    TWorkThread(FThreadLst.Objects[i]).Terminate;
    TWorkThread(FThreadLst.Objects[i]).Resume;
  end;
  Sleep(100);
  FmissonLst.Free;
  inherited;
end;
第一页 上一页 下一页 最后页 有 127 条纪录 共7页 21 - 40
 用户名:
 密 码:
自动登陆(30天有效)
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表