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

  • 相关阅读:
    520了,用32做个简单的小程序
    年轻就该多尝试,教你20小时Get一项新技能
    自定义注解!绝对是程序员装逼的利器!!
    vs2015添加ActiveX Control Test Container工具(转载)
    编译MapWinGis
    C#遍历集合与移除元素的方法
    c#winform程序,修改MessageBox提示框中按钮的文本
    java程序员面试答题技巧
    什么是DOM
    uml类关系
  • 原文地址:https://www.cnblogs.com/bigben0123/p/3184308.html
Copyright © 2011-2022 走看看