我有个idea 高手都来看看

liutengfeigo 2010-05-30 11:00:13
我们学校所有寝室的网络有这样一个特点,1m的网卡,稳定速度在120左右。但是在重新进行网络连接后的5秒到10s内,进行下载,那么下载速度可以冲到2到3m不等。那么不停的断开网络连接和网络重连,则可以很大程度的加快下载速度。我想请大家制作一个可以完全代替手工不停断开网络连接和网络重连的工具。谢谢大大们了!!
ps: 如果有可能,最好有一个设置界面,包括一下设置----开始、停止、断开网络连接和网络重连之间的间隔秒数设置。
...全文
166 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
liutengfeigo 2010-05-31
  • 打赏
  • 举报
回复
liutengfeigo 2010-05-31
  • 打赏
  • 举报
回复
再置顶~
liutengfeigo 2010-05-31
  • 打赏
  • 举报
回复
人工置顶~
liutengfeigo 2010-05-30
  • 打赏
  • 举报
回复

不是的。我学校,假如我们手动不停的断开,再连接。绝对是一直下载的速度的5倍以上。(假如都是下一个100M的东西)。
haitao 2010-05-30
  • 打赏
  • 举报
回复
【在重新进行网络连接后的5秒到10s内,进行下载,那么下载速度可以冲到2到3m】
这个是因为前面连接的时间里,其实已经在下载了吧,只是计算下载速度时,这个时间没被算进去,所以显得速度高了
liutengfeigo 2010-05-30
  • 打赏
  • 举报
回复
hongss 2010-05-30
  • 打赏
  • 举报
回复
断开再连接的时间有没有计算进去?
liutengfeigo 2010-05-30
  • 打赏
  • 举报
回复
亮剑_ 2010-05-30
  • 打赏
  • 举报
回复
1、网络断开再连接,对下载速度有影响?
可能性猜测:交换机或路由器中的网速限制策略,在刚连接上时策略生效有一个延迟
2、这个功能一般防火墙都有,只是不一定能做到定时自动断开和连接
3、抄一段代码,参考一下
调用了 iphlpapi.dll 中两个API函数

const
iphlpapilib = 'iphlpapi.dll';
MAX_INTERFACE_NAME_LEN = 256; // MPRAPI.H
ANY_SIZE = 1;
MAXLEN_IFDESCR = 256;
MAXLEN_PHYSADDR = 8;
MIB_IF_ADMIN_STATUS_UP = 1;
MIB_IF_ADMIN_STATUS_DOWN = 2;
MIB_IF_ADMIN_STATUS_TESTING = 3;
type
_MIB_IFROW = record
wszName: array[0..MAX_INTERFACE_NAME_LEN - 1] of WCHAR;
dwIndex: DWORD;
dwType: DWORD;
dwMtu: DWORD;
dwSpeed: DWORD;
dwPhysAddrLen: DWORD;
bPhysAddr: array[0..MAXLEN_PHYSADDR - 1] of BYTE;
dwAdminStatus: DWORD;
dwOperStatus: DWORD;
dwLastChange: DWORD;
dwInOctets: DWORD;
dwInUcastPkts: DWORD;
dwInNUcastPkts: DWORD;
dwInDiscards: DWORD;
dwInErrors: DWORD;
dwInUnknownProtos: DWORD;
dwOutOctets: DWORD;
dwOutUcastPkts: DWORD;
dwOutNUcastPkts: DWORD;
dwOutDiscards: DWORD;
dwOutErrors: DWORD;
dwOutQLen: DWORD;
dwDescrLen: DWORD;
bDescr: array[0..MAXLEN_IFDESCR - 1] of BYTE;
end;

MIB_IFROW = _MIB_IFROW;
_MIB_IFTABLE = record
dwNumEntries: DWORD;
table: array[0..ANY_SIZE - 1] of MIB_IFROW;
end;
MIB_IFTABLE = _MIB_IFTABLE;
PMIB_IFTABLE = ^MIB_IFTABLE;

function GetIfTable(pIfTable: PMIB_IFTABLE; var pdwSize: ULONG; bOrder: BOOL): DWORD; stdcall;
external iphlpapilib name 'GetIfTable';
function SetIfEntry(const pIfRow: MIB_IFROW): DWORD; stdcall;
external iphlpapilib name 'SetIfEntry';

//断开
procedure TForm1.Button1Click(Sender: TObject);
var
dwSize: DWORD;
mit: PMIB_IFTABLE;
i: integer;
begin
GetIfTable(nil, dwSize, TRUE);
mit := GetMemory(dwSize);
if GetIfTable(mit, dwSize, TRUE) = NO_ERROR then
for i := 0 to Pred(mit^.dwNumEntries) do
begin
mit^.table[i].dwAdminStatus := MIB_IF_ADMIN_STATUS_DOWN;
if SetIfEntry(mit^.table[i]) = NO_ERROR then
ShowMessage('Stop Adapter(' + IntToStr(mit^.table[i].dwIndex) + ')'
+ pchar(@mit^.table[i].bDescr[0]) + ' succeed.');
end;
FreeMemory(mit);
end;

//连接
procedure TForm1.Button2Click(Sender: TObject);
var
dwSize: DWORD;
mit: PMIB_IFTABLE;
i: integer;
begin
GetIfTable(nil, dwSize, TRUE);
mit := GetMemory(dwSize);
if GetIfTable(mit, dwSize, TRUE) = NO_ERROR then
for i := 0 to Pred(mit^.dwNumEntries) do
begin
mit^.table[i].dwAdminStatus := MIB_IF_ADMIN_STATUS_UP;
if SetIfEntry(mit^.table[i]) = NO_ERROR then
ShowMessage('Start Adapter(' + IntToStr(mit^.table[i].dwIndex) + ')'
+ pchar(@mit^.table[i].bDescr[0]) + ' succeed.');
end;
FreeMemory(mit);
end;

1,594

社区成员

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

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