pastebin

Paste #81416: 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;}

Private
Wrap long lines

2 + 1 =