Есть необходимость не светить свой АйПИ..Поэтому надо подключиться к ИРЦ серву через прокси. Скаэжите, как это реализовать на Сях???
Странно, что ничего не происходит...т.е. коннет происходит, но вот общение с соксом как-то неверно...На канал никакой бот не заходит и тишина вообще полная. и в файл записывается два байта, а не столько,колько было-бы похоже что там все данные...Помогите. Код (Text): #include <stdio.h> #include <stdlib.h> #include <winsock2.h> #include <windows.h> #include "resource.h" #pragma comment(lib,"ws2_32.lib") //-------------------------------------------------- struct server { char address[32]; unsigned short port; }; int ConnectSocks(SOCKET sock, server *i,server *s) { WSAData wsa; WSAStartup(MAKEWORD(2,2),&wsa); SOCKADDR_IN sin; memset(&sin,0,sizeof(sin)); char req[256]; char ans[1024]; int n = 0; if( (strlen(s->address)!= 0) && (s->port != 0)) { sin.sin_addr.S_un.S_addr = inet_addr(s->address); sin.sin_family = AF_INET; sin.sin_port = htons(s->port); } else return 1; sock = socket(AF_INET,SOCK_STREAM,0); if(sock != INVALID_SOCKET) { if(!connect(sock,(struct sockaddr*)&sin,sizeof(sin))) { req[0] = 5; req[1] = 1; req[2] = 0; n = send(sock,req,3,0); if(n==0) return 1; n = recv(sock,ans,2,0); if(n != 2) return 1; if(ans[1] !=0) return 1; int m = strlen(i->address); req[0] = 5; req[1] = 1; req[2] = 0; req[3] = 3; req[4] = m; memcpy(req+5,i->address,m); *((unsigned short*)(req+5+m)) = htons(i->port); n = send(sock,req,m+7,0); if(n==0) return 1; n = recv(sock,ans,10,0); if(n != 10) return 1; if(ans[1] != 0) return 1; if(ans[3] != 1) return 1; } else { MessageBox(HWND_DESKTOP,"Connection failed","",MB_ICONERROR); return 1; } } return 0; } int WINAPI WinMain(HINSTANCE hi,HINSTANCE,LPSTR,int) { char *socks_address = "83.228.105.117"; int socks_port = 3128; char *irc_address = "80.92.100.184"; int irc_port = 6667; //------------------------------ server irc = {0}; server socks = {0}; SOCKET s = INVALID_SOCKET; char tmp[256]; wsprintf(socks.address,"%s",socks_address); socks.port = socks_port; wsprintf(irc.address,"%s",irc_address); irc.port = irc_port; if( ConnectSocks(s,&irc,&socks) == 1) return 0; else { wsprintf(tmp,"PASS %s\r\n","password"); send(s,tmp,strlen(tmp)+1,0); wsprintf(tmp,"NICK %s\r\n","thriouss"); send(s,tmp,strlen(tmp)+1,0); wsprintf(tmp,"USER ID 127.0.0.1 Server :%s\r\n","username"); send(s,tmp,strlen(tmp)+1,0); wsprintf(tmp,"JOIN #%s\r\n","development"); send(s,tmp,strlen(tmp)+1,0); wsprintf(tmp,"PRIVMSG #%s :\x03\x32 %s \r\n","development","message"); send(s,tmp,strlen(tmp)+1,0); } return 0; }