zoukankan      html  css  js  c++  java
  • Time-wait状态下将套接字端口号重新分配给新的套接字

    //Time-wait状态下将套接字端口号重新分配给新的套接字
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <arpa/inet.h>
    #include <sys/socket.h>

    #define TRUE 1
    #define FALSE 0
    void error_handling(char*message);

    int main(int argc, char *argv[])
    {
    int serv_sock,clnt_sock;
    char message[30];
    int option,str_len;
    socklen_t optlen,clnt_adr_sz;
    struct sockaddr_in serv_adr,clnt_adr;
    if(argc!=2)
    {
    printf("Usage: %s<port> ",argv[0]);
    exit(1);
    }

    serv_sock=socket(PF_INET,SOCK_STREAM,0);
    if(serv_sock==-1)
    {
    error_handling("socket error()!");
    }
    //将SO_REUSEADDR的值改为1,使得将Time-wait状态下的套接字端口号重新分配给新的套接字;
    optlen=sizeof(option);
    option=TRUE;
    setsockopt(serv_sock,SOL_SOCKET,SO_REUSEADDR,(void*)&option,optlen);

    memset(&serv_adr,0,sizeof(serv_adr));
    serv_adr.sin_family=AF_INET;
    serv_adr.sin_addr.s_addr=htonl(INADDR_ANY);
    serv_adr.sin_port=htons(atoi(argv[1]));

    if(bind(serv_sock,(struct sockaddr*)&serv_adr,sizeof(serv_adr)))
    {
    error_handling("bind error!!!");
    }

    if(listen(serv_sock,5)==-1)
    {
    error_handling("bind error!!!");
    }

    clnt_adr_sz = sizeof(clnt_adr);
    clnt_sock=accept(serv_sock,(struct sockaddr*)&clnt_adr,&clnt_adr_sz);
    while((str_len=read(clnt_sock,message,sizeof(message)))!=0)
    {
    write(clnt_sock,message,str_len);
    write(1,message,str_len);
    }
    close(clnt_sock);
    close(serv_sock);
    return 0;
    }

    void error_handling(char*message)
    {
    fputs(message,stderr);
    fputc(' ',stderr);
    exit(1);
    }

  • 相关阅读:
    Lucene in action 笔记 case study
    关于Restful Web Service的一些理解
    Lucene in action 笔记 analysis篇
    Lucene in action 笔记 index篇
    Lucene in action 笔记 term vector
    Lucene in action 笔记 search篇
    博客园开博记录
    数论(算法概述)
    DIV, IFRAME, Select, Span标签入门
    记一个较困难的SharePoint性能问题的分析和解决
  • 原文地址:https://www.cnblogs.com/shiheyuanfang/p/14390830.html
Copyright © 2011-2022 走看看