Delphi Socket 编程(7)

本文介绍了使用Delphi进行Socket编程,包括Socket5客户端基于Tcp协议的实现,代理服务器的工作原理,以及一个简单的QQ数据转发程序示例。通过实例展示了如何与Socket5代理服务器握手协商,以及如何实现数据的转发。
摘要由CSDN通过智能技术生成

一:前言

二:Socket5客户端基于Tcp协议的实现

该程序的原理如下:

       你的客户端程序(发送数据)------>Socket5代理服务器(中转数据)----->远程目的主机(显示数据).所以你必须拥有一个Socket5代理服务器软件,强烈推荐朱尧坤先生写的CCproxy,下载地址http://www.youngzsoft.com/.


新建一个工程,放上四个Label,五个Edit,一个ServerSock控件,一个按钮和一个Memo控件.在uses里添加Winsock.窗口初始化的时候初始化各个控件.

procedure TForm1.FormCreate(Sender: TObject); 
var 
TempWSAData:TWSAData; 
begin 
Label1.Caption:='Socks5代理服务器地址'; 
Edit1.Text:='127.0.0.1'; 
Label2.Caption:='Socks5代理服务器端口'; 
Edit2.Text:='1080'; 
Label3.Caption:='远程服务器地址'; 
Edit3.Text:='127.0.0.1'; 
Label4.Caption:='远程服务器端口'; 
Edit4.Text:='9999'; 
Edit5.Text:='输入要发送的字符'; 
Button1.Caption:='测试'; 
ServerSocket1.Port:=9999; 
ServerSocket1.Active:=True; 
Memo1.Lines.Clear; 
//初始化Winsock 
if (WSAStartup(MAKEWORD(2,0),TempWSAData)<>0) then 
begin 
Application.MessageBox('程序初始化失败!',Pchar(Application.Title),MB_ICONINFORMATION); 
Application.Terminate; 
end 
else 
Memo1.Lines.Add('程序初始化成功!'); 
end; 

//点Button1的时候通过代理服务器发送数据 

procedure TForm1.Button1Click(Sender: TObject); 
var 
  MyClientSock:TSocket; 
  Socket5Proxy:TSockAddr; 
TargetSock:TSockAddr; 
MySocketBuf:array[0..256]of byte; 
SendStrBuf:array[0..1024*16] of char; 
PcharSocketAddr:PChar; 
Re,i:integer; 
begin 
Memo1.Lines.Add('----------------------------'); 
//1:创建Socket 
MyClientSock:=socket(AF_INET,SOCK_STREAM,0); 
if(MyClientSock=INVALID_SOCKET) then 
begin 
Memo1.Lines.Add('创建Socket失败!'); 
Exit; 
end 
else 
Memo1.Lines.Add('成功创建socket.'); 
//2:连接Socket5代理服务器 
ZeroMemory(@Socket5Proxy,sizeof(Socket5Proxy)); 
Socket5Proxy.sin_family := AF_INET; 


GetMem(PcharSocketAddr,Length(Edit1.Text)+1); 
ZeroMemory(PcharSocketAddr,Length(Edit1.Text)+1); 
StrPCopy(PcharSocketAddr,Edit1.Text); 


Socket5Proxy.sin_addr.S_addr :=inet_addr(PcharSocketAddr); 
FreeMem(PcharSocketAddr); 
Socket5Proxy.sin_port := htons(StrToInt(Edit2.Text)); 
Re:=connect(MyClientSock,Socket5Proxy,sizeof(Socket5Proxy)); 


if 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值