作者 Anonymous [actionscript] 2012-05-01 19:26 (点击下载)

  1. #include "stdio.h"
  2. #include "malloc.h"
  3. #include "string.h"
  4. #include <netinet/in.h>
  5. #include "sys/socket.h"
  6. #include <sys/types.h>
  7. #include <sys/stat.h>
  8. #include <fcntl.h>
  9. #include "unistd.h"
  10. #include "sys/time.h"
  11. int main(int argc,char* argv[]) {
  12. fd_set rdfds;
  13. int ret=0;
  14. struct timeval timeout;
  15. timeout.tv_sec=10;
  16. timeout.tv_usec=0;
  17. char input[999]="";
  18. fd_set infds;
  19. char* si="NICK z365982546rn";
  20. char* sii="USER z15689257 8 * :z54896525rn";
  21. char* siii="join #ubuntu-cnrn";
  22. char* rii=malloc(10485760);
  23. char* p_s=malloc(33);
  24. char* p_s1=NULL;
  25.  
  26. int n=0;
  27. char* ping="PING :";
  28. char* pong="PONG ";
  29. char* colon=":";
  30. char* i="!";
  31. int fd=open("irclog",O_RDWR|O_CREAT|O_APPEND,S_IWUSR|S_IRUSR);
  32. int s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  33.  
  34. struct sockaddr_in a;
  35. a.sin_family=AF_INET;
  36. a.sin_addr.s_addr=inet_addr(argv[1]);
  37. a.sin_port=htons(6667);
  38. memset(rii,0,10485760);
  39. connect(s,(struct sockaddr*)&a,sizeof(a));
  40.  
  41. send(s,si,strlen(si),0);
  42. send(s,sii,strlen(sii),0);
  43. send(s,siii,strlen(siii),0);
  44.  
  45. for (;;) {FD_ZERO(&rdfds);
  46. FD_SET(s,&rdfds);
  47. ret=0;
  48. ret=select(s+1,&rdfds,NULL,NULL,&timeout);
  49. if (ret<0) perror("select");
  50. else if (ret==0) printf("timeout! no streamn");
  51. else { printf("ret=%dn",ret);
  52. if (FD_ISSET(s,&rdfds)) {
  53. n=recv(s,rii,1024,0); if (n==-1) {close(s);break;}
  54. write(fd,rii,strlen(rii));
  55. printf("%s",rii);
  56. printf("wode recv:%dn",n);
  57. if (strstr(rii,ping)&&strstr(rii,".freenode.netrn")) {if (strstr(rii,colon)&&strstr(rii,i)) { }
  58. else {p_s1=strstr(rii,colon);
  59. memset(p_s,0,33);
  60. strcpy(p_s,pong);
  61. strcat(p_s,p_s1);
  62. send(s,p_s,strlen(p_s),0);
  63. printf("%s",p_s);
  64. }
  65. }
  66. rii=rii+n;
  67. }
  68. }
  69. FD_ZERO(&infds);
  70. FD_SET(0,&infds);
  71. ret=0;
  72. ret=select(1,&infds,NULL,NULL,&timeout);
  73. if (ret<0) perror("select");
  74. else if (ret==0) printf("input timeout!n");
  75. else { scanf("%s",input);
  76. send(s,input,strlen(input),0);
  77. }
  78. }
  79.  
  80.  
  81. return 0;}

提交下面的校正或者修改. (点击这里开始一个新的帖子)
姓名: 在 cookie 中记住我的名字

屏幕抓图:(jpeg 或 png)