Paste
#81415: Untitled ASCII paste by 111.61.56.198
#include "stdio.h"
#include "malloc.h"
#include "string.h"
#include <netinet/in.h>
#include "sys/socket.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "unistd.h"
#include "sys/time.h"
int main(int argc,char* argv[]) {
fd_set rdfds;
int ret=0;
struct timeval timeout;
timeout.tv_sec=10;
timeout.tv_usec=0;
char input[999]="\0";
fd_set infds;
char* si="NICK z365982546\r\n";
char* sii="USER z15689257 8 * :z54896525\r\n";
char* siii="join #ubuntu-cn\r\n";
char* rii=malloc(10485760);
char* p_s=malloc(33);
char* p_s1=NULL;
int n=0;
char* ping="PING :";
char* pong="PONG ";
char* colon=":";
char* i="!";
int fd=open("irclog",O_RDWR|O_CREAT|O_APPEND,S_IWUSR|S_IRUSR);
int s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
struct sockaddr_in a;
a.sin_family=AF_INET;
a.sin_addr.s_addr=inet_addr(argv[1]);
a.sin_port=htons(6667);
memset(rii,0,10485760);
connect(s,(struct sockaddr*)&a,sizeof(a));
send(s,si,strlen(si),0);
send(s,sii,strlen(sii),0);
send(s,siii,strlen(siii),0);
for (;;) {FD_ZERO(&rdfds);
FD_SET(s,&rdfds);
ret=0;
ret=select(s+1,&rdfds,NULL,NULL,&timeout);
if (ret<0) perror("select");
else if (ret==0) printf("timeout! no stream\n");
else { printf("ret=%d\n",ret);
if (FD_ISSET(s,&rdfds)) {
n=recv(s,rii,1024,0); if (n==-1) {close(s);break;}
write(fd,rii,strlen(rii));
printf("%s",rii);
printf("wode recv:%d\n",n);
if (strstr(rii,ping)&&strstr(rii,".freenode.net\r\n")) {if (strstr(rii,colon)&&strstr(rii,i)) { }
else {p_s1=strstr(rii,colon);
memset(p_s,0,33);
strcpy(p_s,pong);
strcat(p_s,p_s1);
send(s,p_s,strlen(p_s),0);
printf("%s",p_s);
}
}
rii=rii+n;
}
}
FD_ZERO(&infds);
FD_SET(0,&infds);
ret=0;
ret=select(1,&infds,NULL,NULL,&timeout);
if (ret<0) perror("select");
else if (ret==0) printf("input timeout!\n");
else { scanf("%s",input);
send(s,input,strlen(input),0);
}
}
return 0;}