Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   MMP протокол формирование пакета (https://forum.antichat.xyz/showthread.php?t=149353)

_nic 18.10.2009 23:06

MMP протокол формирование пакета
 
Пытаюсь понять как работает.Пока ничего невыходит.Абсолютно непонятно как пакеты формировать :( Пробывал так
Код:

int _tmain(int argc, _TCHAR* argv[])
{
        SOCKET s;SOCKADDR_IN adr;WSADATA wsd;
        WSAStartup(MAKEWORD(2,0),&wsd);
        hostent *h;
        char Ip[1024];
        char *datain=new char[1024*1024];
        memset(datain,NULL,1024*1024);
        h=gethostbyname("mrim.mail.ru");
        sprintf(Ip,"%d.%d.%d.%d",(unsigned char)h->h_addr_list[0][0],(unsigned char)h->h_addr_list[0][1],(unsigned char)h->h_addr_list[0][2],(unsigned char)h->h_addr_list[0][3]);
        adr.sin_family=AF_INET;
        adr.sin_addr.s_addr =inet_addr(Ip);
        adr.sin_port = htons(2042);
        s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
        connect( s,(sockaddr *)&adr, sizeof(adr));
        recv(s,datain,1024*1024,0);
        closesocket(s);
        int mraport;
        char *buf=new char[1024];
        strtok(datain,"\n");
        strcpy(buf,strstr(datain,":"));
        buf+=1;
        mraport=atoi(buf);
        buf-=1;
        delete []buf;
        strtok(datain,":");
        strcpy(Ip,datain);
        memset(datain,NULL,strlen(datain)+1);
        adr.sin_family=AF_INET;
        adr.sin_addr.s_addr =inet_addr(Ip);
        adr.sin_port = htons(mraport);
        s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
        connect( s,(sockaddr *)&adr, sizeof(adr));
        mrim_packet_header_t data;
        mrim_packet_header_t _data;
        mrim_connection_params_t params;
        data.dlen=0;
        data.msg=MRIM_CS_HELLO;
        data.magic=PROTO_VERSION;
        data.seq=0;
        data.magic=CS_MAGIC;
        data.fromport=mraport;
        data.from=0;
        cout<<send(s,(char*)&data,sizeof(data),0)<<endl;
        int received=0;WSASetLastError(0);
        received=recv(s,(char*)&_data,sizeof(_data),0);
        cout<<received<<_data.seq<<endl;
        printf("%d",WSAGetLastError());
        closesocket(s);
        getch();
        WSACleanup();
        return 0;
}

А ответ не бубум .То есть recv возвращяет 0.Как же надо составлять эти долбаные пакеты?

Gar|k 18.10.2009 23:13

http://forum.antichat.ru/thread133090.html

_nic 18.10.2009 23:38

Цитата:

Сообщение от Gar|k
http://forum.antichat.ru/thread133090.html

Я ассемблер непонимаю :(


Время: 10:43