关于服务

近段时间发现明显关注diocp3的人越来越多,首先感谢大家选择使用DIOCP3,虽然我不能保证diocp3底层100%不出问题,但是我会尽量去保障diocp3底层代码的稳定,使他成为一个稳定的通信库。由于作者现在还是一个苦逼的上班族,还得为老板卖命。为了不至于被老板炒鱿鱼。我今天慎重考虑了下,平常大家在使用diocp3的过程中,碰到bug,请大家点击<<【DIOCP3-说明书】关于DIOCP3服务端常见的问题>> (http://diocp.wedelphi.com/?p=115)看看是否有类似的情况。如果还是搞不定不要担心,没有请剥离一份简单的代码(客户端和服务端)请不要使用三方控件,发可以编译的工程文件给我,我尽量安排时间(一般在中午休息和晚上)调试程序。谢谢大家理解!

Diocp讨论群: 320641073
本群为技术讨论群,如果有技术问题的时候请大家停止吹水,贴图。
1.请大家尽量帮忙解答群友的问题。
2.本群优先解答diocp问题,请熟悉的朋友不吝赐教。
3.DIOCP的DEMO问题请先看看DEMO说明。FAQ中的提及的文档。
4.请教技术问题请百度->再提问,多思考才会领悟深刻。
5.本群禁止讨论股票。

“关于服务”的14个回复

  1. 最近测试了一个c#同步调用客户端,发现服务端在长时间运行后内存会越来越大,最后内存溢出异常。
    我把C#客户端的程序和工程文件放到网盘中去了,麻烦帮看下。同步调用是不可以的吗?

    1. 应该是服务端默认的心跳没有开启,然后死链接一直没有T掉,你可以定时运行DiocpTcpServer,KickOut,
      demo默认是没有开启心跳的,

  2. 博主,还是不行,固定时间进行kickout也不行,内存还是往上涨。我怕是moniter和log的问题,这两个都关了。我设置了个timer,每10秒钟触发一次,执行FTcpServer.KickOut(6000);,测试内存还是一直涨。但是我看要是用自带的client没有任何问题。

  3. C#客户端代码:
    每一秒钟建立1000个线程,线程进行连接测试完成后自动销毁,目前客户端程序没有什么问题,长时间运行内存也不涨。
    TcpClient tcp = new TcpClient();
    try
    {
    tcp.Client.Connect(tbx_ip.Text, int.Parse(tbx_port.Text));
    tcp.Client.Send(EncodFactory.DefaultEncoding.GetBytes(“发送了一个TCP测试信息!”));
    byte[] buffer = new byte[256];
    tcp.Client.Receive(buffer);
    i++;
    AddTextToSuccListBox(i.ToString() + “数据接收成功:” + EncodFactory.DefaultEncoding.GetString(buffer, 0, buffer.Length));
    tcp.Client.Disconnect(true);
    buffer = null;
    }
    catch (Exception er)
    {
    AddTextToErrListBox(“错误:” + er.Message);
    }
    finally
    {

    tcp.Client.Close();
    tcp.Close();

    }

    1. 我下载了你的C#例子,测试确实发现这种情况,原因正在查,应该是不停的断开/连接导致内存上涨。
      感谢反馈bug

    2. 今天中午做了下优化,你可以下载最新的版本,再测试一下
      11.修复在不使用SOCKET重用情况下重复创建Socket句柄的Bug。
      优化内存使用
      2015-04-10 13:08:06

发表评论

电子邮件地址不会被公开。