一个简单的socket监听的服务器实例

来源:互联网 发布:淘宝购买不了系统繁忙 编辑:程序博客网 时间:2024/06/01 10:31
#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<signal.h>#include<unistd.h>#include<stdlib.h>#include<assert.h>#include<stdio.h>#include<string.h>#include<stdbool.h>static bool stop=false;static void handle_term(int sig){    stop=true;}int main(int argc, char *argv[]){    signal(SIGTERM,handle_term);//绑定SIGTERM终止信号的事件处理函数为handle_term    if(argc<3){        printf("uage %s ip_address port_number backlog\n ",                basename(argv[0]));        return 1;    }    //获取参数    const char *ip=argv[1];    int port=atoi(argv[2]);    int backlog=atoi(argv[3]);    //创建socket,socket的协议族为PF_INET(ipv4),流服务,默认协议    int sock=socket(PF_INET, SOCK_STREAM,0);    assert(sock>=0);    //创建socket)address    struct sockaddr_in address;    bzero( &address, sizeof(address) ); //清0    address.sin_family = AF_INET;       //地址的协议族设为tcp/ipv4    inet_pton(AF_INET,ip,&address.sin_addr);//把点分十进制转化成ipv4结构的网络字节序地址    address.sin_port=htons(port);           //转化端口    int ret=bind(sock, (struct sockaddr * )&address , sizeof(address)); //绑定socket到socket_address    assert(ret!=-1);    ret=listen(sock,backlog);//监听端口    assert(ret!=-1);    while(!stop){        sleep(1);    }    close(sock);    return 0;}
原创粉丝点击