日期:2014-05-16 浏览次数:20743 次
#include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/types.h> #include <stdlib.h> #include <stdio.h> #include <netdb.h> #include <string.h> #include <signal.h> static int listen_fd = -1; void exit_handler(int no) { close(listen_fd); exit(0); } int main(int argc,char * argv[]) { unsigned short port = 10002; char buffer[1024000]; int len,i; signal(SIGTERM,exit_handler); signal(SIGINT,exit_handler); /* ipv 6 地址 */ struct sockaddr_in6 server_addr; struct sockaddr_in6 client_addr; socklen_t sockaddr_len = sizeof(struct sockaddr_in6); if(argc > 1) port = (unsigned short)atoi(argv[1]); /* 第一步:创建TCP 侦听SOCKET*/ listen_fd = socket(PF_INET6,SOCK_STREAM,0); if(listen_fd == -1) { perror("socket"); } /* 第二步:设置侦听端口 */ memset((void *)&server_addr,0,sizeof(server_addr)); server_addr.sin6_family = AF_INET6 ; /* ipv6 */ server_addr.sin6_port = htons(port); server_addr.sin6_addr = in6addr_any; if(bind(listen_fd,(struct sockaddr *)&server_addr,sockaddr_len)!=0) { perror("bind"); exit_handler(0); } /* 第三步:通知内核开始侦听 ,这里是非阻塞 */ if(listen(listen_fd,20)!= 0) { perror("listen"); exit_handler(0); } fprintf(stdout,"TCP echo server ,listen on %d\n",port); /* 第四步:开始用等待客户端的联接 */ while(1) { int new_fd ; memset((void *)&client_addr,0,sizeof(client_addr)); sockaddr_len = sizeof(client_addr); /* 没有客户端联接,将会这里阻塞*/ new_fd = accept(listen_fd,(struct sockaddr *)&client_addr,&sockaddr_len); if(new_fd == -1) continue; fprintf(stdout,"client connect: ip %s,port %d\n",inet_ntop(AF_INET6, (void *)&(client_addr.sin6_addr),buffer, sockaddr_len),ntohs(client_addr.sin6_port)); /* 做ECHO操作*/ len = recv(new_fd,buffer,sizeof(buffer),0); if(len <=0) continue; if(strncmp("exit",buffer,4)!=0) send(new_fd,buffer,len,0); close(new_fd); } fprintf(stdout,"close TCP server\n%d"); exit_handler(0); }
#include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/types.h> #include <stdlib.h> #include <stdio.h> #include <netdb.h> #include <string.h> #include <signal.h> #include <time.h> #include <sys/time.h> static int tcp_fd = -1; void exit_handler(int no) { close(tcp_fd); exit(0); } int main(int argc,char * argv[]) { unsigned short port = 10002; unsigned char ip[512] = "fe80::230:1bff:fe3e:a3c6"; char buffer[10240000]; ssize_t len; int a; int tv44; int Datasize; struct timeval tv; struct timeval tv1; struct timeval tv2; signal(SIGTERM,exit_handler); signal(SIGINT,exit_handler); struct sockaddr_in6 server_addr; socklen_t sockaddr_len = sizeof(struct sockaddr_in6); if(argc > 1) //port = (unsigned short)atoi(argv[1]); Datasize =(unsigned short)atoi(argv[1]); for(a=0;a<atoi(argv[1]);a++) buffer[a]='1'; if(argc > 2) strncpy(ip,argv[2],sizeof(ip)-1); /* 第一步:创建TCP 侦听SOCKET*/ tcp_fd = socket(PF_INET6,SOCK_STREAM,0); if(tcp_fd == -1) { perror