#include #include #include #include #include #include #include int main(int argc,char *argv[]) { if(argc!=2) { printf ("usage: client dest_ip\n"); exit(1); } struct sockaddr_in addr; int sd; setbuf(stdout,NULL); addr.sin_addr.s_addr = inet_addr(argv[1]); struct sockaddr_in sin; addr.sin_family=PF_INET; addr.sin_port=htons(6666); sd=socket(PF_INET,SOCK_SEQPACKET, IPPROTO_SCTP); if(sd<0) { perror(NULL); exit(1); } else printf("conecting..."); if(connect(sd,(struct sockaddr *)&addr,sizeof(addr))<0) { perror(NULL); exit(1); } int n; char buff[4098]; if((n=recv(sd,buff,4098,0))>0) write(STDOUT_FILENO, buff,n); close(sd); } #include #include #include #include #include #include #include #include char buf[4098]; void check_sys_param(){ int days, hours, mins, num; struct sysinfo sys_info; if(sysinfo(&sys_info) != 0) perror("sysinfo"); days = sys_info.uptime / 86400; hours = (sys_info.uptime / 3600) - (days * 24); mins = (sys_info.uptime / 60) - (days * 1440) - (hours * 60); sprintf(buf, "Uptime: %ddays, %dhours, %dminutes, %ldseconds\n", days, hours, mins, sys_info.uptime % 60); sprintf( buf+strlen(buf), "Load Avgs: 1min(%ld) 5min(%ld) 15min(%ld)\n", sys_info.loads[0], sys_info.loads[1], sys_info.loads[2]); sprintf(buf+strlen(buf), "Total Ram: %ldk\tFree: %ldk\n", sys_info.totalram / 1024, sys_info.freeram / 1024); sprintf(buf+strlen(buf), "Shared Ram: %ldk\n", sys_info.sharedram / 1024 ); sprintf( buf+strlen(buf), "Buffered Ram: %ldk\n", sys_info.bufferram / 1024); sprintf( buf+strlen(buf), "Total Swap: %ldk\tFree: %ldk\n", sys_info.totalswap / 1024, sys_info.freeswap / 1024); sprintf( buf+strlen(buf), "Number of processes: %d\n", sys_info.procs); return 0; } main() { struct sockaddr_in cad; socklen_t alen; struct sockaddr_in addr; addr.sin_family = PF_INET; addr.sin_addr.s_addr = INADDR_ANY; addr.sin_port = htons(6666); int sd = socket(PF_INET, SOCK_SEQPACKET, IPPROTO_SCTP); if( bind( sd, (struct sockaddr *)&addr,sizeof(addr) ) == -1 ) { perror(NULL); exit(1); } else printf("binded\n"); if (listen(sd, 1)==-1) { perror(NULL); exit(1); } else printf("listening...\n"); check_sys_param(); int sd2; for (;;) { alen = sizeof(cad); if ( ( sd2 = accept(sd, (struct sockaddr *)&cad, &alen)) < 0) { perror(NULL); exit(1); } printf(buf); send(sd2,buf,strlen(buf),0); close(sd2); } }