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; |