代理服务器 大虾们能来谈谈代理服务器的实现原理吗?谁有没有相关的资料或者原代码,提供点这方面的信息给我啊!最近公司老大要我弄这个,我还一头雾水呢·帮帮忙啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 2000年电脑报29,30,31期编程学堂有用Delphi设计代理服务器的文章,还有源码里面使用了rxlib2.75中的控件)如果您在该代码中受到了启发,请与大家共享。unit main;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Menus, ScktComp, RXShell, RxMenus, AppEvent, Mask, ToolEdit, CurrEdit;type MySe_record=record Used:boolean; SS_handle:integer; Csocket:tclientsocket; lookingup:boolean; lookuptime:integer; request:boolean; request_str:string; client_connected:boolean; remote_connected:boolean; end;type TForm1 = class(TForm) ClientSocket1: TClientSocket; ServerSocket1: TServerSocket; Panel1: TPanel; Memo1: TMemo; Label1: TLabel; PopupMenu1: TRxPopupMenu; N11: TMenuItem; N21: TMenuItem; N01: TMenuItem; mhssoft: TMenuItem; AppEvents: TAppEvents; TrayIcon1: TRxTrayIcon; N1: TMenuItem; N2: TMenuItem; Edit1: TCurrencyEdit; Label2: TLabel; Edit2: TEdit; Label3: TLabel; Edit3: TCurrencyEdit; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocket1Write(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public service_enabled:boolean; MySe:array of MySe_record; MySes:integer; lookuptimeout:integer; invalidrequests:integer; { Public declarations } end;var Form1: TForm1;var tmp:string;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);begin caption:=application.Title;// edit2.Text:=MacData20001.Local_IP; edit2.ReadOnly:=true; memo1.Align:=alclient; serversocket1.port:=round(edit3.value); serversocket1.Active:=true; application.Minimize;end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin if service_enabled then serversocket1.Active:=false;end;procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);var line,host:string; i,j,port:integer;begin tmp:=socket.ReceiveText; memo1.ReadOnly:=false; memo1.Lines.Add(tmp); memo1.ReadOnly:=true; j:=pos(chr(13)+chr(10),tmp); while j>0 do begin line:=copy(tmp,1,j-1); delete(tmp,1,j+1); j:=pos('Host',line); if j>0 then begin delete(line,1,j+5); j:=pos(':',line); if j>0 then begin host:=copy(line,1,j-1); delete(line,1,j); try port:=strtoint(line); except port:=80; end; end else begin host:=trim(line); port:=80; end; if not clientsocket1.active then begin clientsocket1.host:=host; clientsocket1.port:=port; clientsocket1.active:=true; end else clientsocket1.socket.sendtext(tmp); break; end; j:=pos(#13+#10,tmp); end;end;procedure TForm1.ClientSocket1Write(Sender: TObject; Socket: TCustomWinSocket);begin socket.SendText(tmp);end;procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);var i,j:integer; rec_bytes:integer; rec_buffer:array[0..2047] of char;begin rec_bytes:=socket.ReceiveBuf(rec_buffer,2048); serversocket1.Socket.Connections[j-1].SendBuf(rec_buffer,rec_bytes);end;end. 累了,给大家发个图解闷.赤裸少女现身马路600多人围观(附图) 从Java转向Delphi? 关于label的宽 RAVE报表的问题??? 如何去掉Treeview的"+"和"-"? 有没有一种XP风格的控件能使所有的控件呈现XP风格? 大侠们支招!!急!! 有谁知道珠海天心?给个意见哈! 请问原生(NATIVE)控件指的是什么控件?? 网络协议相关——向大侠请教 能否不通过数据库控件(如TTable..),而用StringGrid与QReport完成报表? 用什么证句检测是否可以正常连接到某服务器 如何遍历adodataset中的数据
里面使用了rxlib2.75中的控件)
如果您在该代码中受到了启发,请与大家共享。
unit main;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Menus, ScktComp, RXShell, RxMenus, AppEvent, Mask,
ToolEdit, CurrEdit;type
MySe_record=record
Used:boolean;
SS_handle:integer;
Csocket:tclientsocket;
lookingup:boolean;
lookuptime:integer;
request:boolean;
request_str:string;
client_connected:boolean;
remote_connected:boolean;
end;
type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
ServerSocket1: TServerSocket;
Panel1: TPanel;
Memo1: TMemo;
Label1: TLabel;
PopupMenu1: TRxPopupMenu;
N11: TMenuItem;
N21: TMenuItem;
N01: TMenuItem;
mhssoft: TMenuItem;
AppEvents: TAppEvents;
TrayIcon1: TRxTrayIcon;
N1: TMenuItem;
N2: TMenuItem;
Edit1: TCurrencyEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TCurrencyEdit;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Write(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
service_enabled:boolean;
MySe:array of MySe_record;
MySes:integer;
lookuptimeout:integer;
invalidrequests:integer;
{ Public declarations }
end;var
Form1: TForm1;
var
tmp:string;implementation{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
caption:=application.Title;
// edit2.Text:=MacData20001.Local_IP;
edit2.ReadOnly:=true;
memo1.Align:=alclient;
serversocket1.port:=round(edit3.value);
serversocket1.Active:=true;
application.Minimize;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if service_enabled then
serversocket1.Active:=false;
end;procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
line,host:string;
i,j,port:integer;
begin
tmp:=socket.ReceiveText;
memo1.ReadOnly:=false;
memo1.Lines.Add(tmp);
memo1.ReadOnly:=true;
j:=pos(chr(13)+chr(10),tmp);
while j>0 do begin
line:=copy(tmp,1,j-1);
delete(tmp,1,j+1);
j:=pos('Host',line);
if j>0 then begin
delete(line,1,j+5);
j:=pos(':',line);
if j>0 then begin
host:=copy(line,1,j-1);
delete(line,1,j);
try
port:=strtoint(line);
except
port:=80;
end;
end else begin
host:=trim(line);
port:=80;
end;
if not clientsocket1.active then begin
clientsocket1.host:=host;
clientsocket1.port:=port;
clientsocket1.active:=true;
end else clientsocket1.socket.sendtext(tmp);
break;
end;
j:=pos(#13+#10,tmp);
end;
end;procedure TForm1.ClientSocket1Write(Sender: TObject;
Socket: TCustomWinSocket);
begin
socket.SendText(tmp);
end;procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
i,j:integer;
rec_bytes:integer;
rec_buffer:array[0..2047] of char;
begin
rec_bytes:=socket.ReceiveBuf(rec_buffer,2048);
serversocket1.Socket.Connections[j-1].SendBuf(rec_buffer,rec_bytes);
end;
end.