t.c
上传用户:chaoqun
上传日期:2013-06-29
资源大小:1k
文件大小:3k
源码类别:

Telnet客户端

开发平台:

C/C++

  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3. #include <errno.h> 
  4. #include <string.h> 
  5. #include <sys/types.h> 
  6. #include <netinet/in.h> 
  7. #include <sys/socket.h> 
  8. #include <sys/wait.h> 
  9. #include <sys/types.h>
  10. #include <sys/ipc.h>
  11. #include <sys/msg.h>
  12. #include <netdb.h>
  13. #include <ctype.h>
  14. #include <fcntl.h>
  15. #include "fTelnet.h"
  16. int main(argc,argv)
  17. int argc;
  18. char **argv;
  19. {
  20. char strBuff[256];
  21. char szRecBuff[256];
  22. int socClient;
  23. char szCmdText[16];
  24. char ErrorMessage[100];
  25. struct sockaddr_in SerAddress;
  26. int i;
  27. int j;
  28. int nRtn;
  29. memset(strBuff,0X00,sizeof(strBuff));
  30. InitTelnetClientState();
  31. /*dms 130.76.23.250*/
  32. /*axe 10.156.66.187*/
  33. /*s1240 130.76.4.122*/
  34. /*cc08 172.16.23.54*/
  35. /*zxj 10.20.41.253*/
  36. /*t 10.20.0.239*/
  37. if((socClient=OpenSocketStream("192.168.82.25",23,ErrorMessage))<0)
  38. {
  39. printf("Open Socket Error!!n");
  40. printf("ErrorMessage is %s n",ErrorMessage);
  41. return 0;
  42. }
  43. if(fcntl(socClient,F_SETFL,O_NONBLOCK) == -1)
  44. {
  45. printf("System error. O_NONBLOCKn");
  46. return -10;
  47. }
  48. strcpy(strBuff,"TERM=vt100nexport TERMnstty erase '^?'n");
  49. send(socClient, strBuff, strlen(strBuff), 0);
  50. //send(socClient, "post", 4, 0);
  51. for(;;)
  52. {
  53. j = 0;
  54. for(;;)
  55. {
  56. nRtn=recv(socClient, szRecBuff,255, 0);
  57. if(nRtn >0)
  58. {
  59. for(i=0;i<nRtn;i++)
  60. {
  61. if(szRecBuff[i]>32)
  62. {
  63. printf("%c ",szRecBuff[i]);
  64. }
  65. else
  66. {
  67. printf("%02x ",(unsigned char)szRecBuff[i]);
  68. /*if(szRecBuff[i]==0)
  69. szRecBuff[i]=0x20;*/
  70. }
  71. }
  72. szRecBuff[nRtn] = '';
  73. strcpy(szRecBuff,(char *)Negotiate(szRecBuff,socClient));
  74. printf("nrecv%d:%sn",nRtn,szRecBuff);
  75. j=0;
  76. if(strstr(szRecBuff,"login:")||strstr(szRecBuff,"Password:")||strstr(szRecBuff,"#")||strstr(szRecBuff,"请输入口令"))
  77. break;
  78. if(strstr(szRecBuff,"login:")||strstr(szRecBuff,"Password:"))
  79. {
  80. if(!strstr(szRecBuff,"Last login:"))
  81. break;
  82. }
  83. if(strstr(szRecBuff,"<"))
  84. break;
  85. }
  86. else
  87. {
  88. j++;
  89. if(j>10*10)
  90. {
  91. break;
  92. }
  93. usleep(1000*100);
  94. }
  95. printf("********* ceshi ********n");
  96. }
  97. printf(":");
  98. scanf("%s",strBuff);
  99. printf("%sn",strBuff);
  100. for(i=0;i<strlen(strBuff);i++)
  101. {
  102. if(strBuff[i] == '~')
  103. strBuff[i] = ' ';
  104. }
  105. if(strcmp(strBuff,"0") == 0)
  106. {
  107. sprintf(strBuff,"%s","post");
  108. i = strlen(strBuff);
  109. }
  110. if(strcmp(strBuff,"1") == 0)
  111. {
  112. sprintf(strBuff,"%sn","root");
  113. i = strlen(strBuff);
  114. }
  115. if(strcmp(strBuff,"2") == 0)
  116. {
  117. sprintf(strBuff,"%sn","root");
  118. i = strlen(strBuff);
  119. }
  120. if(strcmp(strBuff,"3") == 0)
  121. {
  122. sprintf(strBuff,"%sn","date");
  123. i = strlen(strBuff);
  124. }
  125. nRtn=send(socClient, strBuff, i, 0);
  126. if(nRtn == i)
  127. {
  128. printf("send cmd success %dn",i);
  129. }
  130. else
  131. {
  132. printf("send cmd errorn");
  133. }
  134. }
  135. close(socClient);  
  136. return 0;
  137. }