Вообщем писал класс для работы с socks5 возникли проблемы тут(файл socks5.cpp) Code: if(recv(s, re, sizeof(re), 0)!=-1) рекв принимает 0 байт, но когда все те же действия делал в main все работало как часы. вот исходники: socks5.cpp Code: #include "socks5.h" WSADATA _WsaData; long socks5::dec_hex(int n) { static char number[MAXNUMBER]; sprintf(number, "%lx", n); char null = '\x0'; char * adr_null = &null; ULONG a = strtoul(number, &adr_null, 16); return a; } int socks5::connect_s(char *proxy_name, int proxy_port, char *host_ip, int host_port) { char *Message; bool flag = false; if(WSAStartup (0x0101, &_WsaData)!=0) {return ERR_WSA;} SOCKADDR_IN anAddr; anAddr.sin_family = AF_INET; anAddr.sin_port = htons(proxy_port); anAddr.sin_addr.S_un.S_addr = inet_addr(proxy_name); s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(connect(s, (struct sockaddr *)&anAddr, sizeof(struct sockaddr))==0) { Message = new char[3]; Message[0] = 0x05; Message[1] = 0x01; Message[2] = 0x00; if(send(s, Message, 3, 0)==SOCKET_ERROR) { return ERR_SEND; closesocket(s); } memset(Message,0,3); recv(s, Message, 3, 0); flag = true; } if(flag==true) if(Message[1]) { closesocket(s); return ERR_AUTH; } else { delete(Message); Message = 0; Message = new char[10]; int ip[4]; sscanf(host_ip,"%i.%i.%i.%i",&ip[0],&ip[1],&ip[2],&ip[3]); Message[0]=0x05; Message[1]=0x01; Message[2]=0x00; Message[3]=0x01; Message[4]=dec_hex(ip[0]); Message[5]=dec_hex(ip[1]); Message[6]=dec_hex(ip[2]); Message[7]=dec_hex(ip[3]); Message[8]=0x00; Message[9]=dec_hex(host_port); if(send(s, Message, 10, 0)==SOCKET_ERROR) { return ERR_SEND; closesocket(s); } memset(Message,0,10); recv(s, Message, 10, 0); if(Message[1]) { closesocket(s); return ERR_AUTH; } } conn = true; return 0; }; int socks5::close_s() { closesocket(s); return 0; } char* socks5::send_host(char *data) { if(conn == true) { char *re; re = new char[1024]; if(send(s, data, sizeof(data), 0)==SOCKET_ERROR) { return (char *)ERR_SEND; } else { if(recv(s, re, sizeof(re), 0)!=-1) { return re; } else { return (char *)-1; } } } else { return (char *)-1; } }; socks5::~socks5() { if(conn==true) closesocket(s); }; socks5.h Code: #include <winsock.h> #include <stdio.h> #pragma comment(lib, "ws2_32.lib") #define MAXNUMBER 100 #define ERR_AUTH 10; #define ERR_WSA 11; #define ERR_SEND 12; #define DATA_MAX 1024; extern WSADATA _WsaData; class socks5 { protected: SOCKET s; bool conn; public: ~socks5(); int connect_s(char *proxy_name,int proxy_port,char *host_ip,int host_port); char *send_host(char *data); int close_s(); private: long dec_hex(int n); }; PS код строго не судите. Класс сырой.