zoukankan      html  css  js  c++  java
  • TCP回射服务器程序:main函数

    TCP回射并发服务器

    1.创建套接字,绑定服务器的众所周知端口

    创建一个TCP套接字,在待绑定到该TCP套接字的网际网套接字地址结构中填入通配地址(INADDR_ANY)

    和服务器的众所知周(SERV_PORT,在头文件中unp.h中其定义为9877)

    绑定通配地址是在告知系统:

    要是系统是多宿主机,我们将接受目的地地址为任何本地接口的连接

    我们对TCP端口号的选择应该比1023大,比5000大,比49152小,而且不和任何注册的端口冲突

    listen把该套接字地址转换成一个监听套接字

    2.等待完成客户连接

    服务器阻塞于accept调用,等待客户连接的完成

    3.并发服务器

    fork为每个客户派生一个处理它们的子进程

    子进程关闭监听套接字,父进程关闭已连接套接字,子进程接着调用str_echo

    #include	"unp.h"
    
    int
    main(int argc, char **argv)
    {
    	int					listenfd, connfd;
    	pid_t				childpid;
    	socklen_t			clilen;
    	struct sockaddr_in	cliaddr, servaddr;
    
    	listenfd = Socket(AF_INET, SOCK_STREAM, 0);
    
    	bzero(&servaddr, sizeof(servaddr));
    	servaddr.sin_family      = AF_INET;
    	servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
    	servaddr.sin_port        = htons(SERV_PORT);
    
    	Bind(listenfd, (SA *) &servaddr, sizeof(servaddr));
    
    	Listen(listenfd, LISTENQ);
    
    	for ( ; ; ) {
    		clilen = sizeof(cliaddr);
    		connfd = Accept(listenfd, (SA *) &cliaddr, &clilen);
    
    		if ( (childpid = Fork()) == 0) {	/* child process */
    			Close(listenfd);	/* close listening socket */
    			str_echo(connfd);	/* process the request */
    			exit(0);
    		}
    		Close(connfd);			/* parent closes connected socket */
    	}
    }
    

      

    ========================if i have some wrong, please give me a message, thx.========================
  • 相关阅读:
    练习:利用函数写一个扑克牌列表
    练习:利用函数实现一个登陆系统
    练习:利用函数实现一个注册系统
    函数的进阶
    Python的函数, 返回值, 参数
    Python中文件的读写操作
    练习:根据车牌信息,统计各省车牌持有量
    练习: 三次机会登录系统
    Chapter06_类与对象、封装、构造方法
    创建对象时,该对象的成员变量如果不赋值的情况下,默认值是
  • 原文地址:https://www.cnblogs.com/ailx10/p/5352250.html
Copyright © 2011-2022 走看看