小弟学校是利用H3C 802.1上网的,所以近期想写个类似的 软件作为毕业作品
可一点头绪都不清楚,问题如下,希望达达们给个思路 (最好就是代码示例啦 不过还是不奢求了)1、这类软件是属于代理上网软件吗?2、未使用802.1客户短拨号登陆时 电脑是获取不到IP的,只有用登陆器成功拨号后就能获取到一个IP并开始计费 问题来了,明明没IP,怎么跟学校的总服务器那边通信以获取个内网IP?算不算还涉及到DNS服务器之类的问题
希望顶顶,分真的不多,希望帮忙
可一点头绪都不清楚,问题如下,希望达达们给个思路 (最好就是代码示例啦 不过还是不奢求了)1、这类软件是属于代理上网软件吗?2、未使用802.1客户短拨号登陆时 电脑是获取不到IP的,只有用登陆器成功拨号后就能获取到一个IP并开始计费 问题来了,明明没IP,怎么跟学校的总服务器那边通信以获取个内网IP?算不算还涉及到DNS服务器之类的问题
希望顶顶,分真的不多,希望帮忙
解决方案 »
- 一个oracle下的sql语句问题(急)
- 使用listview1.items.add时,用vsIcon显示,些时该区大小由imagelist的大小来定,当我改变imagelist中的图片时,必须重新listview1.items
- 求助Delphi7的中英文对照教材或资料!!
- 为什么我的程序会死机?
- 谁能给我个delphi6的下载网址
- dbgrid的简单问题。
- 为什么dbimage存不了jpeg图
- **********获得文件大小的问题*********
- pchar和string类型之间怎么转换???
- 请指点: ActiveForm 不能下载到IE?
- 帮忙推荐个差不多的简单控件
- Delphi支持多维字符串数组吗?懒查资料了
//当连接远程主机成功时…procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket);vari: integer;begin for i:=1 to sessions do if (session[i-1].CSocket.socket.sockethandle=socket.SocketHandle) and session[i-1].Used then begin session[i-1].CSocket.tag:=socket.SocketHandle; session[i-1].remote_connected:=true; {置远程主机已连通标志} session[i-1].Lookingup:=false; {清标志} break; end;end; //当远程主机断开时…procedure TForm1.ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket);vari,j,k: integer;begin for i:=1 to sessions do if (session[i-1].CSocket.tag=socket.SocketHandle) and session[i-1].Used then begin session[i-1].remote_connected:=false; {置为未连接} if not session[i-1].client_connected then session[i-1].Used:=false {假如客户机已断开,则置释放资源标志} else for k:=1 to serversocket1.Socket.ActiveConnections do if (serversocket1.Socket.Connections[k-1].SocketHandle=session[i-1].SS_Handle) and session[i-1].used then begin serversocket1.Socket.Connections[k-1].Close; break; end; break; end; j:=sessions; k:=0; for i:=1 to j do begin if session[j-i].Used then break; inc(k); end; if k>0 then {修正会话数组} begin sessions:=sessions-k; setlength(session,sessions); end; edit1.text:=inttostr(sessions);end; //当与远程主机通信发生错误时…procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);vari,j,k: integer;begin for i:=1 to sessions do if (session[i-1].CSocket.tag=socket.SocketHandle) and session[i-1].Used then begin socket.close; session[i-1].remote_connected:=false; {置为未连接} if not session[i-1].client_connected then session[i-1].Used:=false {假如客户机已断开,则置释放资源标志} else for k:=1 to serversocket1.Socket.ActiveConnections do if (serversocket1.Socket.Connections[k-1].SocketHandle=session[i-1].SS_Handle) and session[i-1].used then begin serversocket1.Socket.Connections[k-1].Close; break; end; break; end; j:=sessions; k:=0; for i:=1 to j do begin if session[j-i].Used then break; inc(k); end; errorcode:=0; if k>0 then {修正会话数组} begin sessions:=sessions-k; setlength(session,sessions); end; edit1.text:=inttostr(sessions);end; //向远程主机发送页面请求…procedure TForm1.ClientSocket1Write(Sender: TObject; Socket: TCustomWinSocket);vari: integer;begin for i:=1 to sessions do if (session[i-1].CSocket.tag=socket.SocketHandle) and session[i-1].Used then begin if session[i-1].Request then begin socket.SendText(session[i-1].request_str); {假如有请求,发送} session[i-1].Request:=false; {清标志} end; break; end;end; //远程主机发来页面数据时…procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);vari,j: integer;rec_bytes: integer; {传回的数据块长度}rec_Buffer: array[0..2047] of char; {传回的数据块缓冲区}begin for i:=1 to sessions do if (session[i-1].CSocket.tag=socket.SocketHandle) and session[i-1].Used then begin rec_bytes:=socket.ReceiveBuf(rec_buffer,2048); {接收数据} for j:=1 to serversocket1.Socket.ActiveConnections do if serversocket1.Socket.Connections[j-1].SocketHandle=session[i-1].SS_Handle then begin serversocket1.Socket.Connections[j-1].SendBuf(rec_buffer,rec_bytes); {发送数据} break; end; break; end;end; //“页面找不到”等错误信息出现时…procedure TForm1.AppException(Sender: TObject; E: Exception);begin inc(invalidrequests);end; //查找远程主机定时…procedure TForm1.Timer1Timer(Sender: TObject);vari,j: integer;begin for i:=1 to sessions do if session[i-1].Used and session[i-1].Lookingup then {假如正在连接} begin inc(session[i-1].LookupTime); if session[i-1].LookupTime>lookuptimeout then {假如超时} begin session[i-1].Lookingup:=false; session[i-1].CSocket.active:=false; {停止查找} for j:=1 to serversocket1.Socket.ActiveConnections do if serversocket1.Socket.Connections[j-1].SocketHandle=session[i-1].SS_Handle then begin serversocket1.Socket.Connections[j-1].Close; {断开客户机} break; end; end; end;end;end. 后记由于这种设计思路仅仅在被代理端和远程主机之间增加了一个重定向功能,被代理端原有的缓存技术等特点均保留,因此效率较高。经过测试,利用1个33.6K的Modem上网时,三到十个被代理工作站同时上网,仍有较好的响应速度。由于被代理工作站和代理服务器工作站之间的连接一般通过高速链路,因此瓶颈主要出现在代理服务器的上网方式上。通过上述方法,作者成功开发了一套完善的代理服务器软件并与机房计费系统完全集成,实现了利用一台工作站完成上网代理、上网计费、用机计费等功能。 有编程经验的朋友完全可以另行增加代理服务器功能,如设定禁止访问站点、统计客户流量、Web访问列表等等。
现在小弟连 怎么在没IP的情况 拨号 都不知道呢 期待达达
2.这个就是DHCP的功能(不是DNS),现在一般路由器都有这个功能,它的目的就是给个客户端自动分配IP