袜子 5 UDP 连接
Socks 5 UDP connection
我正在尝试连接到UDP Socks5代理,但没有服务器会回复我的初始握手。Wire shark显示正确的信号正在进入服务器,但没有收到回复
#define PUT_BYTE(ptr,data) (*(unsigned char*)ptr = data)
static int Connect_proxy(SOCKET sock,sockaddr_in Rcv_address) {
char buff[200],*ptr;
sockaddr_in SenderAddrTemp;
int SenderAddrSize= sizeof(SenderAddrTemp);
ptr=buff;
int iResult;
PUT_BYTE(ptr++,5);
PUT_BYTE(ptr++,1);
PUT_BYTE(ptr++,0);
iResult = sendto(sock,
buff, ptr-buff, 0, (SOCKADDR *) & Rcv_address, sizeof (Rcv_address));
if (iResult == SOCKET_ERROR) {
wprintf(L"[Send]Conection request failed with error: %dn", WSAGetLastError());
//closesocket(sock);
//WSACleanup();
return -1;
}
iResult = recvfrom(sock,buff, 200, 0, (SOCKADDR *) & SenderAddrTemp, &SenderAddrSize);
if (iResult==-1) {
wprintf(L"[Recv] Connection request failed with error: %dn", WSAGetLastError());
return -1;
}
else
if (iResult==2) {
wprintf(L"OK");
}
return 0;
}
套接字初始化为:
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (iResult != NO_ERROR) {
wprintf(L"WSAStartup failed with error: %dn", iResult);
return 1;
}
//---------------------------------------------
// Create a socket for sending data
SendSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (SendSocket == INVALID_SOCKET) {
wprintf(L"socket failed with error: %ldn", WSAGetLastError());
WSACleanup();
return 1;
}
RecvAddr.sin_family = AF_INET;
RecvAddr.sin_port = htons(8888);
RecvAddr.sin_addr.s_addr = inet_addr("114.207.246.173");
service.sin_family = AF_INET;
service.sin_addr.s_addr = htonl(INADDR_ANY);
service.sin_port = htons(0);
bind(SendSocket, (SOCKADDR *) &service, sizeof (service));
if (iResult == SOCKET_ERROR) {
wprintf(L"bind failed with error %un", WSAGetLastError());
closesocket(SendSocket);
WSACleanup();
return 1;
}
Connect_proxy(SendSocket,RecvAddr);
谢谢!
已修复:
虽然袜子连接将是UDP,但握手必须在TCP中完成
SendSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);//这必须成为TCP套接字SOCK_STREAM
相关文章:
- 如何在 2 台主机之间保持 UDP 套接字连接打开
- 使用单个套接字处理多个传入的 UDP 连接
- 使用 IP 帮助程序的 Windows 中活动 UDP 连接的远程地址
- 连接UDP套接字,但仍然接收来自其他源的数据报
- 在环路中使用 UDP 套接字时连接被拒绝
- C UDP RecvFrom最终悬挂在远程连接上
- 我无法在用C++编写的服务器和用 C# 编写的客户端之间建立 UDP 连接
- 如何从活动的 udp 连接获取远程 IP 地址和端口
- UDP 连接始终成功
- C [UDP]如何跟踪服务器上的所有连接(客户端)套接字连接
- 为什么提升 asio udp 连接会抛出"send: Connection refused"?
- 使用 FFMPEG 库到 UDP 流 mpeg2 ts 视频延迟/初始连接问题
- 唯一标识UDP连接-来自同一IP的多个连接
- Corba Naming_Service创建了如此多的UDP连接
- 使用 TCP 套接字'register'客户端进行 UDP 连接?
- 为UDP连接选择()
- 袜子 5 UDP 连接
- 在linux上的c++中获取活动的TCP/UDP连接
- C服务器和Java客户端之间的UDP连接
- 使用UDP连接到服务器