zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    LG7124 [Ynoi2008] stcm【树分治,构造】
    美团杯 2021【杂题】
    UOJ455【UER #8】雪灾与外卖【反悔贪心,模拟费用流】
    js正则匹配正负小数
    iview table 自适应高度
    iview tree render 自定义右键菜单(解决部分场景下官网tree右键菜单bug)
    iTextSharp Image.ScaleToFit自适应缩放简述
    C# 从动态类型中获取集合
    Js自定义日期
    SVN代码统计工具(资源下载+使用命令)
  • 原文地址:https://www.cnblogs.com/bigben0123/p/3184308.html
Copyright © 2011-2022 走看看