微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何完成授权电报API作为客户端在C?

如何解决如何完成授权电报API作为客户端在C?

我有以下代码可与电报api交互,作为客户端,用于创建ayth_key以便将第一条传输消息发送到电报服务器,如以下链接中所述:

telegram sample auth key

#include <stdio.h>
#include <string.h> //strlen
#include <sys/socket.h>
#include <arpa/inet.h> //inet_addr
#include <stdint.h>
#include <time.h>
#include <math.h>
#include <unistd.h>
int main(int argc,char *argv[])
{
    int socket_desc;
    struct sockaddr_in server;
    char server_reply[10240]={'\0'};

    //Create socket
    socket_desc = socket(AF_INET,SOCK_STREAM,0);
    if (socket_desc == -1)
    {
        printf("Could not create socket");
    }

    server.sin_addr.s_addr = inet_addr("149.154.167.50");
    server.sin_family = AF_INET;
    server.sin_port = htons(443);

    //Connect to Remote Server
    if (connect(socket_desc,(struct sockaddr *)&server,sizeof(server)) < 0)
    {
        puts("connect error");
        return 1;
    }

    puts("Connected\n");
    char msg[42];
    
    msg[0] = 0xef;
    msg[1] = 10;
    

    char aaa = 0;
    for (int i = 2; i < 10; i++)
    {
        
        msg[i] = (char)aaa;
    }
    
    time_t Now = time(NULL);
    
    printf("%ld\n",Now);
    int64_t i2 = (int64_t)Now * pow(2,32);
    
    printf("%ld\n",i2);
    char *m = (char *)&i2;
    
    for (int i = 10; i < 18; i++)
    {
        msg[i] = *(m++);
    }

    
    int llen = 20;
    char *m2 = (char *)&llen;
    for (int i = 18; i < 22; i++)
    {
        msg[i] = *(m2++);
    }

    
    char req[4]= {0x78,0x97,0x46,0x60};
    int o = 0;
    for (int i = 22; i < 26; i++)
    {
        
        msg[i] = req[o];
        o++;
    }
    
    char tt[16];

    tt[0] = 62;
    tt[1] = 5;
    tt[2] = 73;
    tt[3] = 130;
    tt[4] = 140;
    tt[5] = 202;
    tt[6] = 39;
    tt[7] = 233;
    tt[8] = 102;
    tt[9] = 179;
    tt[10] = 1;
    tt[11] = 164;
    tt[12] = 143;
    tt[13] = 236;
    tt[14] = 226;
    tt[15] = 252;
    int j = 0;
    for (int i = 26; i < 42; i++)
    {
        msg[i] = tt[j];
        j++;
    }
    for(int k = 0;k<42;k++)
    {
        
        printf("%X",msg[k]);
    }
    
    
    if (send(socket_desc,(char *)msg,40,0) < 0)
    {
        puts("Send Failed");
        return 1;
    }
    puts("\nData Send\n");
    
    
    if (recv(socket_desc,server_reply,10240,0) < 0)
    {
        puts("recv Failed");
    }

    
    puts("Reply received\n");
    for(int k = 0;k<10240;k++)
    {
        
        printf("%X",server_reply[k]);
    }
    
    return 0;
}

但是我没有任何结果! 为什么?我的代码有什么问题? 我简化代码以更好地了解自己...

我还在第一个字节中添加了0xef并在第二个字节中添加代码长度,任何事情都与我最初提到的那个链接中的示例相同 谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。