首页 > 其他 > 详细

基于TCP协议的服务器编程

时间:2017-02-28 11:34:23      阅读:173      评论:0      收藏:0      [点我收藏+]

#include<netdb.h>
#include<sys/socket.h>
#include<unistd.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<memory.h>
#include<signal.h>
#include<time.h>

int sockfd;

void sig_handler(int signo)
{
    if(signo == SIGINT)
    {
        printf("server close\n");
        close(sockfd);
        exit(1);
    }
}

int main(int argc,char *argv[])
{
    if(argc < 2)
    {
        printf("usage: %s #port\n", argv[0]);
        exit(1);
    }
    if(signal(SIGINT,sig_handler) == SIG_ERR)
    {
        perror("signal sigint error");
        exit(1);
    }
    
    /*步骤1:创建socket(套接字)
     *       注:socket创建在内核中,是一个结构体
     *       AF_INET:IPV4
     *       SOCK_STREAM:tcp协议
    */
    sockfd = socket(AF_INET,SOCK_STREAM,0);
    
    /*
    * 步骤2:调用bind函数将socket和地址(包括ip、port)进行绑定
    */
    struct sockaddr_in serveraddr;
    memset(&serveraddr,0,sizeof(serveraddr));
    //往地址中填入ip、port、internet地址族类型
    serveraddr.sin_family = AF_INET;//IPV4    
    serveraddr.sin_port = htons(atoi(argv[1]));//端口
    serveraddr.sin_addr.s_addr = INADDR_ANY;
    if(bind(sockfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr) < 0 )
    {
        perror("bind error");
        exit(1);
    }
    
    /*
    * 步骤3: 调用listen函数启动监听(指定port监听)
    *         通知系统去接受来自客户端的连接请求
    *         将接受到的客户端连接请求放置到对应的队列中
    *         第二个参数:指定队列的长度
    */
    if(listen(socket,10) < 0 )
    {
        perror("listen error");
        exit(1);
    }
    
    /*
    *  步骤4:
    */
    
    
    
    
    
    
    return 0;
}


 

基于TCP协议的服务器编程

原文:http://www.cnblogs.com/lvdh1314/p/6478048.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!