日期:2014-05-16 浏览次数:20932 次
#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