• libcurl with telnet


    #include <stdio.h>
    #include <string.h>
    #include <curl/curl.h>
    #include <curl/easy.h>
    #include <errno.h>
    #include <dirent.h>
    #include <unistd.h>
    size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp);
    static CURL *curl;
    size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp) {
    DIR * dp;
    struct dirent *dirp;
    int fd, bytes, cnt;
    char dirs[128], dircmp[NAME_MAX], lbuf[2];
    static long socketdno;
    static char buflast;
    static int madewrite = 0;
    static int sockfdokay = 0;
    if (size * nmemb == 0)
    return (0);
    printf("%c", *(char *) buffer);
    if (*(char *) buffer == ' ' && buflast == ':') {
    if (!madewrite) {
    madewrite = 1;
    sprintf(dirs, "/proc/%d/fd", getpid());
    dp = opendir(dirs);
    dp = opendir(dirs);
    if (dp) {
    dirp = (struct dirent *) 1;
    for (cnt = 0; dirp;) {
    dirp = readdir(dp);
    if (dirp) {
    cnt++;
    printf("dir is: %s cnt: %d ", dirp->d_name, cnt);
    sprintf(dirs, "/proc/%d/fd/%s", getpid(), dirp->d_name);
    memset(dircmp, 0, NAME_MAX);
    if (readlink(dirs, dircmp, NAME_MAX) != -1) {
    printf("link points to: %s ", dircmp);
    if (!strncmp(dircmp, "socket:", strlen("socket:")) && cnt == 6) {
    printf("found socket at expected position: %d link: %s ",
    cnt, dirp->d_name);
    sockfdokay = 1;
    }
    }
    }
    }
    printf("fd dir count %d ", cnt);
    closedir(dp);
    }
    if (cnt == 8 && sockfdokay == 1) { //
    bytes = write(3, "CogcoG ", strlen("CogcoG "));
    printf("wrote: %d bytes sock: %d ", bytes, 3);
    bytes = 1;
    bytes = write(3, "who ", strlen("who "));
    printf("wrote: %d bytes sock: %d ", bytes, 3);
    #if 0
    while (bytes >0 ) {
    bytes = read(3,lbuf,1);
    printf("lub:: %c :: ",lbuf);
    }
    #endif
    bytes = write(3, "quit ", strlen("quit "));
    printf("wrote: %d bytes sock: %d ", bytes, 3);
    bytes = write(3, "exit ", strlen("exit "));
    printf("wrote: %d bytes sock: %d ", bytes, 3);
    }
    }
    }
    buflast = *(char *) buffer;
    /* printf("bytes in: %d ",size*nmemb); */
    return (size * nmemb);
    }
    //int main(int argc, char **argv)
    int main() {
    FILE *hd_src;
    int res;
    curl = curl_easy_init();
    /* Get curl 7.7 from sunet.se's FTP site: */
    curl_easy_setopt(curl, CURLOPT_URL, "telnet://192.168.1.1");
    curl_easy_setopt(curl, CURLOPT_USERPWD, "user:password");
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
    res = curl_easy_perform(curl);
    printf("res is: %d ", res);
    /* always cleanup */
    curl_easy_cleanup(curl);
    /* fclose(ftpfile); close the local file */
    return 0;
    }

  • 相关阅读:
    css display:flex 属性
    手机端设计规范(750*1334)
    太阳系动画
    关于调用三方平台接口与推送接口的总结<二>(2020.7.27)
    关于调用三方平台接口与推送接口的总结(2020.7.25)
    IntelliJ IDEA 常用快捷键列表及技巧大全
    JAVA中的泛型
    神兽保佑!
    zookeeper的图形化工具ZooInspector的使用
    Initialization failed for 'https://start.spring.io' Please check URL, network and proxy settings. Error message: Cannot download 'https://start.spring.io': connect timed out问题解决方案
  • 原文地址:https://www.cnblogs.com/bigben0123/p/3184308.html
Copyright © 2020-2023  润新知