通过SOCKS发送UDP数据包到互联网
来源:互联网 发布:效果器软件 编辑:程序博客网 时间:2024/05/16 00:32
一:连接代理服务器
- C/C++ code
if (m_ProxySocket.Create())
if (!m_ProxySocket.Connect("192.168.0.5", 1080))
AddString("无法连接代理服务器!");
else
AddString("连接代理服务器成功。");
else
AddString("创建套节字失败!");
二:
- C/C++ code
BYTE Order[] = {5, 1, 0};
m_ProxySocket.Send(Order, 3);
应答:0x05 0x00 正确
三:
- C/C++ code
BYTE Order[10] = {5, 3, 0, 1}; //UDP ASSOCIATE
*(ULONG*) (Order + 4) = inet_addr("61.183.220.XX"); //IP最后一个断用XX代替,实际使用时为一合法IP
*(LPWORD) (Order + 4 + 4) = ntohs(8000);
m_ProxySocket.Send(Order, 4 + 4 + 2);
应答:05 00 00 01 C0 A8 00 05 0C B1 即:192.168.0.5:3249 正确
四:发送UDP数据
- C/C++ code
BYTE Order[12] = {0, 0, 0, 1};
*(ULONG*) (Order + 4) = inet_addr("61.183.220.XX");
*(LPWORD) (Order + 4 + 4) = ntohs(8000);
Order[10] = 0xFF; //我要发送的数据
Order[11] = 2; //我要发送的数据
m_ComSocket.SendTo(Order, 12, Port, IP); //Port为在第3步得到的端口:3249,IP为在第三步得到的IP:192.168.0.5
//m_ComSocket的创建方法为:m_ComSocket.Create(0, SOCK_DGRAM);
发完第4步后,m_ComSocket没有收到任何回应!注:不通过代理,直接发送0xFF 0x02到61.183.220.XX:8000是有回应的,可见要么数据没有到达61.183.220.XX:8000,要么数据丢失了。或者是我发的格式不正确,我想问题出在第四步,还请高手指点!谢谢。
---------------------------------------
既然你用udp,m_ComSocket怎么可能有反应呢,只要61.183.220.XX:8000能收到就ok了
楼主的假设是正确的,按理能收到回应。这种问题我没见到过。
我自己解决了,问题在第三步:
- C/C++ code
BYTE Order[10] = {5, 3, 0, 1}; //UDP ASSOCIATE
*(ULONG*) (Order + 4) = inet_addr("61.183.220.XX"); //IP最后一个断用XX代替,实际使用时为一合法IP
*(LPWORD) (Order + 4 + 4) = ntohs(8000);
m_ProxySocket.Send(Order, 4 + 4 + 2);
改为:
- C/C++ code
CString SocketAddress;
UINT SocketPort;
m_ComSocket.GetSockName(SocketAddress, SocketPort); //这是用来接收远程服务器回应的,创建方法:m_ComSocket.Create(0, SOCK_DGRAM);
BYTE Order[10] = {5, 3, 0, 1};
*(ULONG*) (Order + 4) = inet_addr(SocketAddress);
*(LPWORD) (Order + 4 + 4) = ntohs(SocketPort);
m_ProxySocket.Send(Order, 4 + 4 + 2);
其实任何地方不用修改,结果正是我想要的。
- 通过SOCKS发送UDP数据包到互联网
- 通过UDP发送和接收数据包
- 发送udp数据包
- C# Socks5 发送UDP数据包
- 用winpcap发送UDP数据包
- VC++实现UDP数据包发送
- [Java]Android发送UDP数据包
- Android使用wifi通过UDP协议发送广播数据包给PC接收不到问题解决方法
- UDP数据包一次发送多大为好
- Vxworks使用UDP发送大数据包
- TCP,UDP发送数据包大小浅析
- #使用Socks5代理发送UDP数据包
- UDP数据包一次发送多大为好?
- TCP,UDP发送数据包大小浅析
- TCP,UDP发送数据包大小浅析
- TCP,UDP发送数据包大小浅析
- 安卓模拟器发送udp数据包
- 原始套接字SOCK_RAW发送UDP数据包
- Linux内核的ioctl函数学习
- 网页地址中文参数接收乱码的解决
- GridView 子父窗口 交互
- 不断播放音乐和改变颜色动态滚动节日贺词的J2me程序
- 跨平台中文文件名乱码的解决
- 通过SOCKS发送UDP数据包到互联网
- 通过ConfigurationSection来轻松地加载配置文件
- 修改:wm5开机启动程序
- 2007年开源领域的十件大事!!!
- 你是在上班吗?-Google内部大曝光(组图)
- 百度日本狂招人 博客搜索或成“杀手锏”
- Berkeley DB 使用简介
- 修改ttf字体美化显示效果
- document.getElementById详解