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;
    }

  • 相关阅读:
    Android code wiki
    Android 屏蔽ScrollView滑动操作
    Android PorterDuff.Mode
    微信小程序开发——小程序分享转发
    支付宝小程序开发之与微信小程序不同的地方
    微信小程序快速移植支付宝小程序
    微信小程序开发——小程序API获取用户位置及异常流处理完整示例
    微信小程序开发——开发者工具中素材管理功能使用的注意事项
    js数组排序实用方法集锦
    chrome谷歌浏览器常用快捷键搜集整理
  • 原文地址:https://www.cnblogs.com/bigben0123/p/3184308.html
Copyright © 2011-2022 走看看