TCP回射服务器程序:main函数
2016-04-04 16:20
477 查看
TCP回射并发服务器
1.创建套接字,绑定服务器的众所周知端口
创建一个TCP套接字,在待绑定到该TCP套接字的网际网套接字地址结构中填入通配地址(INADDR_ANY)
和服务器的众所知周(SERV_PORT,在头文件中unp.h中其定义为9877)
绑定通配地址是在告知系统:
要是系统是多宿主机,我们将接受目的地地址为任何本地接口的连接
我们对TCP端口号的选择应该比1023大,比5000大,比49152小,而且不和任何注册的端口冲突
listen把该套接字地址转换成一个监听套接字
2.等待完成客户连接
服务器阻塞于accept调用,等待客户连接的完成
3.并发服务器
fork为每个客户派生一个处理它们的子进程
子进程关闭监听套接字,父进程关闭已连接套接字,子进程接着调用str_echo
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 */ } }
相关文章推荐
- HttpCore学习----Blocking I/O部分---基本client的实现
- HTTP协议详解
- 网络游戏同步法则
- Linux C高级编程——网络编程之以太网(2)
- 基于Http协议的Android网络编程
- 浅谈浏览器http的缓存机制
- httpclient在并发量较高的调用下问题如何去解决
- android开发--HttpUrlConnection
- “代理服务器拒绝连接“问题
- 手游后台PVP系统网络同步方案总结
- Java安全(加密、摘要、签名、证书、SSL、HTTPS)
- Twsited异步网络框架
- RNN-RBM for music composition 网络架构及程序解读
- 或许是 Nginx 上配置 HTTP2 最实在的教程了
- 循环神经网络(RNN, Recurrent Neural Networks)介绍
- TCP/IP协议之IP协议详解
- iOS开发网络篇-NSURLSession介绍
- TCP/IP协议---ICMP协议及ping、traceroute
- 网络流二十四题之一 —— 飞行员配对方案问题(AIR)
- HTTP