C++使用Socks5协议进行代理上网(三)

本文是C++使用Socks5协议进行代理上网的第三篇,重点介绍了在账号密码认证后如何指定目标服务器IP和Port,以及处理连接方式。文中详细解释了服务器返回的不同RCV值,如0表示验证成功,2表示规则不允许转发,1表示一般服务器失败,可能是网络错误或超时。当RCV值正常时,即可进行数据转发。
摘要由CSDN通过智能技术生成

上一篇文章连接:https://blog.csdn.net/hu421160052/article/details/88870940

这里是账号密码认证之后,这里需要你提供你要到达的具体的目的server的IP和Port,以及连接的具体方式

	index = 0;
	byte Msg3[100];

	//socks5协议部分(5.客户端认证成功后开始进行请求)
	//|-------|-------|-------|--------|-----------|------------| 
	//|  VER  |  CMD  |  RSV  |  ATYP  |  DST.ADDR |  DST.ADDR  |
	//|-------|-------|-------|--------|-----------|------------|
	//|   1	  |	  1   |  0x00 |    1   |   Active  |      2     |
	//|-------|-------|-------|--------|-----------|------------|
	//  VER.是SOCKS协议版本,这里应该是0x05.
	//	CMD.是SOCKS的命令码:
	//		0x01:表示CONNECT请求
	//		0x02:表示BIND请求
	//		0x03:表示UDP转发
	//  RSV.0x00:保留,无实际作用
	//  ATYP.DST.ADDR类型:
	//		0x01:表示IPV4地址
	//		0x03:表示域名格式
	//		0x04:表示IPV6地址
	//  DST.ADDR.目的地址
	//		当ATYP=0x01 DST.ADDR部分为四字节长度,内容为IP本身
	//		当ATYP=0x03 第一个部分为一个1字节表示域名长度,第二部分就是剩余内容为具体域名。Active表示长度不定。没有\0作为结尾
	//	DST.PORT 网络字节序表示的目的端口

	Msg3[index++] = 0x05;						//Version 版本号5
	Msg3[index++] = 0x01;						//CMD CONNECT请求
	Msg3[index++] = 0x00;						//Reserve = 0x00 must be ;
	Msg3[index++] = 0x01;						//ATYP=IPV4
	int ads1 = atoi(ByteAddress[0]);
	int ads2 = atoi(ByteAddress[1]);
	int ads3 = atoi(ByteAddress[2]);
	int ads4 = atoi(ByteAddress[3]);
	
	Msg3[index++] = (byte)(0xff & ads1);
	Msg3[index++] = (byte)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值