Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dante server对Java Socks5客户端和UDP的支持_Java_Android_Sockets_Proxy_Udp - Fatal编程技术网

Dante server对Java Socks5客户端和UDP的支持

Dante server对Java Socks5客户端和UDP的支持,java,android,sockets,proxy,udp,Java,Android,Sockets,Proxy,Udp,我正在给你的客户写信 我已经准备好通过TCP进行自动化和udp关联 我得到了中继服务器的地址和端口,但我缺少udp传输的一些信息 clientSocket = new DatagramSocket(); IPAddress = InetAddress.getByName(serverHostname); byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; String

我正在给你的客户写信

我已经准备好通过TCP进行自动化和udp关联

我得到了中继服务器的地址和端口,但我缺少udp传输的一些信息

   clientSocket = new DatagramSocket();
   IPAddress = InetAddress.getByName(serverHostname); 

   byte[] sendData = new byte[1024]; 
   byte[] receiveData = new byte[1024]; 

   String sentence = "xxx"; 
   sendData = sentence.getBytes();                             

   DatagramPacket sendPacket =  new DatagramPacket(
                                     sendData, 
                                     sendData.length, 
                                     IPAddress, 
                                     sCon.getDstPort()); 

   byte[] addr = sendPacket.getAddress().getAddress();

   byte[]head = new byte[6+addr.length];
   head[0] = (byte) 0x00; //RSV
   head[1] = (byte) 0x00; //RSV
   head[2] = (byte) 0x00; //frag
   head[3] = (byte) 0x01; //Address type
   //Put Address
   System.arraycopy(addr,0,head,4,addr.length);      
   //Put port
   head[head.length - 2] = (byte) (sendPacket.getPort() >> 8);
   head[head.length - 1] = (byte) (sendPacket.getPort());                              


   byte[] buf = new byte[head.length + sendPacket.getLength()];
   byte[] data = sendPacket.getData();
   //Merge 
   System.arraycopy(head,0,buf,0,head.length);
   System.arraycopy(data,0,buf,head.length,sendPacket.getLength());

   DatagramPacket updated = new DatagramPacket(
                                     buf,
                                     buf.length,
                                     relayAddr,
                                     relayPort);                               
   clientSocket.send(updated); 
袜子5 S版本->192.168.11.52

服务器主机名->192.168.11.39

客户端IP->192.168.11.49

示例情况

Target /192.168.11.39, port 9876
SOCKS5 RelayAddr /192.168.11.52, RelayPort 56945
但丁日志

block(0): udp: expected from 192.168.11.39.148, got it from 192.168.11.49.59124
每次都是192.168.11.39*.148*,我不知道哪里出了问题。
DatagramPacket从未到达目标主机

。第五个数字是分配给SOCKS5服务器本地机器上的套接字的本地端口,我记得有时会弄乱Dante和日志有点抽象,但可能它告诉你,他在端口59124上期望的是在端口148上收到的,所以你有可能一次打开多个套接字吗?没有,只有一个。39是目标主机,49是客户端,所以这是源端口。Sock5 rfc只讨论目标端口,而不讨论源端口。是的,这就是我的意思,很抱歉让人费解。我的意思是“服务器的本地机器”,所以远程:-)我会考虑一下,如果我有什么想法,我会写。我发现了问题。rfc:o DST.ADDR所需目标地址o DST.PORT所需目标端口以网络八位字节顺序排列我误解了,DST.ADDR和DST.PORT是关于客户端而不是目标的