#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\n", 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\n", dircmp);
if (!strncmp(dircmp, "socket:", strlen("socket:")) && cnt == 6) {
printf("found socket at expected position: %d link: %s\n",
cnt, dirp->d_name);
sockfdokay = 1;
}
}
}
}
printf("fd dir count %d\n", cnt);
closedir(dp);
}
if (cnt == 8 && sockfdokay == 1) { //
bytes = write(3, "CogcoG\r\r", strlen("CogcoG\r\r"));
printf("wrote: %d bytes sock: %d\n", bytes, 3);
bytes = 1;
bytes = write(3, "who\r", strlen("who\r"));
printf("wrote: %d bytes sock: %d\n", bytes, 3);
#if 0
while (bytes >0 ) {
bytes = read(3,lbuf,1);
printf("lub:: %c ::\n",lbuf);
}
#endif
bytes = write(3, "quit\r", strlen("quit\r"));
printf("wrote: %d bytes sock: %d\n", bytes, 3);
bytes = write(3, "exit\r", strlen("exit\r"));
printf("wrote: %d bytes sock: %d\n", bytes, 3);
}
}
}
buflast = *(char *) buffer;
/* printf("bytes in: %d\n",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\n", res);
/* always cleanup */
curl_easy_cleanup(curl);
/* fclose(ftpfile); close the local file */
return 0;
}

libcurl with telnet的更多相关文章

  1. 【转】如何在Windows+VS2005使用最新静态libcurl 7.35.0获取网页数据,支持HTTPS

    地址: http://blog.csdn.net/hujkay作者:Jekkay Hu(34538980@qq.com)关键词:Windows,curl,ssl,  visual c++ 2005, ...

  2. C++ 用libcurl库进行http通讯网络编程

    使用libcurl完成http通讯,很方便而且是线程安全,转载一篇比较好的入门文章 转载自 http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724 ...

  3. C++ 用libcurl库进行http通讯网络编程(转)

    转载:http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三. ...

  4. curl Protocol 'http not supported or disabled in libcurl

    C:\Documents and Settings\ganiks.liu\Desktop\curl-7.37.0-win32\bin>curl -V curl 7.37.0 (i386-pc-w ...

  5. [工作积累] android 中添加libssl和libcurl

    1. libssl https://github.com/guardianproject/openssl-android 然后执行ndk-build 2.libcurl 源代码组织结构, 下面的mak ...

  6. libcurl

    一.LibCurl基本编程框架 二.一些基本的函数 三.curl_easy_setopt函数部分选项介绍 四.curl_easy_perform 函数说明(error 状态码) 五.libcurl使用 ...

  7. libcurl编程学习

    一.curl简介 curl是一个利用URL语法在命令行方式下工作的文件传输工具.它支持的协议有:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以 ...

  8. libCURL动态分配buffer——节约内存

    libCURL是一个免费的.开源的强大客户端url传输库.支持的平台.协议甚广.平台上有Windows.Linux.FreeBSD:协议上有FTP.HTTP(S).Telnet.DICT.File等. ...

  9. C++ 用libcurl库进行http通讯网络编程[转]

    http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.cur ...

随机推荐

  1. javascript单元测试工具

    单元测试关注的是验证一个模块或一段代码的执行效果是否和设计或预期一样.有些开发人员认为,编写测试用例浪费时间而宁愿去编写新的模块.然而,在处理大型应用程序时,单元测试实际上会节省时间:它能帮助您跟踪问 ...

  2. css3d

    立方体:http://sandbox.runjs.cn/show/1h6zvghj 原理分析:(左负右正) x:与屏幕水平:(在屏幕上) y:与屏幕水平方向垂直(在屏幕上) z:垂直于屏幕(在屏幕外) ...

  3. .NET 知识

    1.读懂IL代码就这么简单 IL是.NET框架中中间语言(Intermediate Language)的缩写.使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件,但此时编译出来的 ...

  4. [iOS翻译]《iOS7 by Tutorials》系列:在Xcode 5里使用单元测试(上)

    简介: 单元测试是软件开发的一个重要方面.毕竟,单元测试可以帮你找到bug和崩溃原因,而程序崩溃是Apple在审查时拒绝app上架的首要原因. 单元测试不是万能的,但Apple把它作为开发工具包的一部 ...

  5. js浮点数精确计算(加、减、乘、除)

    <SPAN style="FONT-SIZE: 18px">//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显.这个函数返回较为精确的加 ...

  6. Linux内核分析——第七周学习笔记20135308

    第七周 可执行程序的装载 一.预处理.编译.链接和目标文件的格式 1.可执行程序是怎么来的 C代码—>预处理—>汇编代码—>目标代码—>可执行文件 .asm汇编代码 .o目标码 ...

  7. 获取iOS系统版本 --- UIDevice

    UIDevice类是一个单例,其唯一的实例( [UIDevice currentDevice] ) 代表了当前使用的设备. 通过这个实例,可以获得设备的相关信息(包括系统名称,版本号,设备模式等等). ...

  8. 学习笔记——Maven超级POM

    2014-07-04:更新如何在安装程序中找到超级pom文件.Maven有一个超级POM,所有的POM均继承此文件.你可以使用解压工具打开jar文件$M2_HOME/lib/maven-model-b ...

  9. Win10开发究竟能实现哪些牛逼的功能

    经Win10开发者群(53078485)大咖Aran童鞋授权,这次先Show一下他通过vs2015做的跨端APP一些高级功能的GIF图,大家可以回帖想要哪个功能的DEMO,我和Aran说一下,会把DE ...

  10. 我给出的一份Java服务器端面试题-适合电话面试

    这部分内容,参考了<面试官的七种武器>一文. 电面与face2face的面试还是有区别的,很多考察方式无法使用. 从简历聊起,逐渐进入正题. Java语法 重载与重写的区别? java如何 ...