网上已经有很多文档详细介绍了协议内容以及怎么去使用,最近在做这个项目,已经完成了TCP协议的全部部分,在这里做下笔记顺便和大家分享下,如果有需要的同志们可以用我这个作为模板,已经精通这些的大神们希望看到问题能给我提出来,我也有几个地方是一知半解,其中有些我遇到的注意事项我会单独注明,防止自己后再犯同样的错误。。。
下面是协议第一部分代码(注意,和代理服务器的连接在这一部分已经完成,这里只贴出了关于通信协议的主要代码,C++中怎么样和代理服务器进行连接如果不了解的话,可以参考我的另一篇博客:https://blog.csdn.net/hu421160052/article/details/87262226)

 int index = 0;byte Msg1[100];//socks5协议部分(1.发送数据至服务器)//|--------|-------------|-------------|  //|  VER   |   NMETHOD   |   METHODS   |  //|--------|-------------|-------------|//|   1    |      1      |    1-255    |//|--------|-------------|-------------|//  VER是SOCKS版本,这里应该是0x05.// NMETHODS是METHODS部分的长度.//  METHODS是客户端支持的认证方式列表,每个方法占1字节。当前的定义是: //        0x00 不需要认证//        0x01 GSSAPI//       0x02 用户名、密码认证//     0x03 - 0x7F由IANA分配(保留)//      0x80 - 0xFE为私人方法保留//        0xFF 无可接受的方法Msg1[index++] = 0x05;    //Version 版本号Msg1[index++] = 0x01;   //Method 方法Msg1[index++] = 0x02; //Username/Password 认证用户名/认证密码//第一次发送数据send(sockClient, (const char*)Msg1, index, 0);char Send_Msg[100];sprintf(Send_Msg, "VER:0x%d%d\r\n METHOD:0x%d%d\r\n Method:0x%d%d\r\n", (Msg1[0] / 16),(Msg1[0] % 16), (Msg1[1] / 16), (Msg1[1] % 16), (Msg1[2] / 16), (Msg1[2] % 16));MessageBoxA(NULL, (const char*)Send_Msg, "发送数据:", NULL);byte RecvMsg1[10];numl=recv(sockClient, (char*)RecvMsg1, sizeof((const char*)RecvMsg1), 0);int q00 = (RecvMsg1[0] / 16),q01= (RecvMsg1[0] % 16);int q10 = (RecvMsg1[1] / 16), q11 = (RecvMsg1[1] % 16);  char result[1024];//socks5协议部分(2.服务器响应数据)//|--------|-------------|//|  VER   |   METHOD    |//|--------|-------------|//|   1    |     1       |//|--------|-------------|//VER是SOCKS版本,这里应该是0x05;//METHOD是服务端选中的方法。如果返回0xFF表示没有一个认证方法被选中,客户端需要关闭连接。sprintf(result,"Length:%d\r\n VER:0x%d%d\r\nMETHOD:0x%d%d\r\n", numl,q00,q01,q10,q11);MessageBoxA(NULL, result, "服务器返回结果:", NULL);



在这里,接受完数据后,socks5第一部分协议内容就算完成了,因为我选择的是账号密码认证方式,也只给服务器发送了那种连接方式,所以服务器最后返回我了一个5和2,如果是没有账号密码的认证方式,可以仔细看下协议内容这一部分是怎么发送消息。
下面是第二部分:
https://blog.csdn.net/hu421160052/article/details/88870940

C++使用Socks5协议进行代理上网(一)相关推荐

  1. C# Socket使用代理 及 Http协议、Socks5协议

    Http协议:  http://www.w3.org/Protocols/rfc2068/rfc2068 socks5 协议: http://www.faqs.org/rfcs/rfc1928.htm ...

  2. CentOS 7作为客户端使用socks5代理上网

    GitHub这两天好像抽风了,正常访问都很难,自己搞了个gogs服务器后准备将github上的项目迁移到本地,先记录一下CentOS7作为客户端设置全局代理的方法 安装privoxy Linux貌似默 ...

  3. DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网...

    我自己的命令: server端: dns2tcpd -F -d 1 -f ./dns2tcpd.conf 输出: 09:08:59 : Debug options.c:97 Add resource ...

  4. Proxifier设置代理上网详细操作

    分享知识 传递快乐 Proxifier配置上网代理 Proxifier 是一款功能非常强大的socks5客户端,可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链.支持X ...

  5. socks5 转 http 代理

    socks5 转 http 代理 在linux系统上安装shadowsocks软件,但是它使用的协议是socks5,对于一些只能使用http代理上网的软件就无能为力了,这就需要一个神器来把socks5 ...

  6. Regeorg 从python2改造为python3-从实战中学习socks5协议

    Regeorg 从python2改造为python3-从实战中学习socks5协议 问题描述 解决过程 环境准备 过程 这两天没啥工作,一般这时候我都不会发挥自己的主观能动性去主动找活,于是乎只能上网 ...

  7. 基于WFP等网络驱动实现局域网内所有设备通过代理上网

    by fanxiushu 2020-10-13 转载或引用请注明原始作者 开始之前,我们先来理解标题是什么意思. 这里所说的局域网内的所有设备通过代理上网,并不是在每台设备上安装某个代理软件然后再通过 ...

  8. Centos系统使用代理上网时 yum的代理设置

    yum的存在使centos上软件的安装.配置.升级.卸载变得十分的方便,但是当安装centos的机器是通过代理服务器访问外网的话,yum的 使用就变得无从下手了,以下介绍以下怎样为yum配置代理地址及 ...

  9. linux命令行模式下实现代理上网 专题

    有些公司的局域网环境,例如我们公司的只允许使用代理上网,图形界面的很好解决就设置一下浏览器的代理就好了,但是linux纯命令行的界面就....下面简单几步就可以实现了! 一.命令行界面的一般代理设置方 ...

  10. Maven工作笔记003---公司只允许代理上网_给maven配置代理下载jar包

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 公司只允许代理上网_给maven配置代理_下载jar包啊 配置很简单: 找到maven的setti ...

最新文章

  1. tomcat安装及使用详解
  2. 业务流程、长周期服务和微服务
  3. 页面加载完毕执行多个JS函数
  4. 距离传感器控制灯泡代码_生迪全彩智能 LED 灯泡体验评测
  5. 释放内容化势能 聚划算《划算8点档》给出新思路
  6. android开发我的新浪微博客户端系列教程
  7. 【论文写作】学位论文写作过程中应注意的7个问题,非常实用
  8. c语言实现语音检测vad_AI大语音(二)——语音预处理
  9. java wifi开发教程_WiFi技术
  10. md5加盐(MySQL,PHP)
  11. echarts 画正弦曲线
  12. 虚拟机安装python3_虚拟机如何安装python
  13. 程序识别验证码图片(一)
  14. Pta题目集:汽车加油问题 (20 分)
  15. 实现网页购物车功能,完成基本的商品价格计算等功能
  16. 实现响应式布局有几种方法
  17. 用于威胁情报分析的虚拟机
  18. Redis安装(完整版)
  19. selenium 成功绕过淘宝登录反爬机制
  20. Jan. 1, 2020 at 7:47 a.m. GMT+8遇到这种时间,转换成中国标准时间

热门文章

  1. matlab正弦信号采样,matlab模拟信号的欠采样及原理理解
  2. 用Python批量生成字幕图片用于视频剪辑
  3. [篇五章二]_使用 USB 系统安装盘在真机上安装激活 Windows 10 LTSC 2021 中文企业版系统
  4. php代码上传工具,php中文网重磅推出“php程序员工具箱” v0.1版本!
  5. 也来谈谈自己做为面试官的面试流程
  6. linux socket非阻塞之 send 和sendto函数
  7. 手写原笔迹输入_手写原笔迹
  8. android ts流解码,DVB开发之TS流的接收,解码与播放
  9. 如何写软件设计文档?
  10. 计算机科学与技术 未来,浅析计算机科学与技术的未来发展趋势