搭建一个简易的时间服务器笔记----C++学习之路
来源:互联网 发布:贷款软件 编辑:程序博客网 时间:2024/06/07 09:09
步骤:
1.创建TCP套接字
int listenfd;listenfd = Socket(AF_INET,SOCK_STREAM,0);
关于socket的函数介绍:点击打开链接
第一个参数是协议族,具体在上面的链接有介绍,这里是一个ipv4的协议族。
第二个参数是协议类型,这里是一个tcp协议。
第三个参数是用于制定某个协议的特定类型,通常某个协议只有一种特定类型,这样这个参数只能设置为0,但是有些协议有多种,就需要设定这个参数。2
2.填写一个网际套接字地址结构
struct sockaddr_in servaddr;bzero(&servaddr,sizeof(servaddr));servaddr.sin_family=AF_INET;servaddr.sin_addr.s_addr=htonl(INADDR_ANY);servaddr.sin_port=htons(13);
关于套接字地址结构:点击打开链接
先清零,然后设置套接字数据结构,关于htonl与htons的知识:点击打开链接
时间获取服务器端口为13.
以及指定IP地址为INADDR_ANY,可以在任意网络上接收客户链接。
3.绑定套接字结构。
Bind(listenfd,(SA*) &servaddr,sizeof(servaddr));关于绑定函数的介绍:点击打开链接
4.通过listen函数把该套接字转换成一个监听套接字
Listen(listenfd,LISTENQ);
listen函数:点击打开链接
5.进行无限循环来监听。
for( ; ;){ connfd=Accept(listenfd,(SA*)NULL,NULL); ticks=tima(NULL); snprintf(buff,sizeof(buff),"%.24s\r\n",ctime(&ticks)); Write(connfd,buff,strlen(buff)); Close(connfd);}服务器进程在accept调用中被投入睡眠,等待三次握手来建立连接,握手完毕返回,accept返回一个已连接描述符,为connfd
用于与客户端通信。
6.代码取自《UNIX网络编程第一卷》其中的一些小点:头文件是书作者自己编写的一个unp.h,里面有将大部分的函数再包装一遍
例如其中的Socket:
intSocket(int family,int type,int protocol){ int n; if((n=socket(family,type,protocol))<0) err_sys("socket error"); return n;}以及其中的err_sys也是作者自己写的return error的一个头文件。
7.整体代码:
#include "unp.h"#include <time.h>#include "myere.h"int main(int argc,char **argv){int listenfd,connfd;struct sockaddr_in servaddr;char buff[MAXLINE];time_t ticks;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(13);Bind(listenfd,(SA*) &servaddr,sizeof(servaddr));Listen(listenfd,LISTENQ);for(; ; ){connfd=Accept(listenfd,(SA*) NULL,NULL);ticks=time(NULL);snprintf(buff,sizeof(buff),"%.24s\r\n",ctime(&ticks));Write(connfd,buff,strlen(buff));Close(connfd);}}8.验证:
阅读全文
0 0
- 搭建一个简易的时间服务器笔记----C++学习之路
- 搭建一个简易的ftp服务器
- 学习一个月web开发的成果,服务器C++,数据库postgresql简易的知识分享平台
- Django学习笔记--第一天--搭建一个简易博客
- 从零开始搭建一个简易的服务器(一)
- 从零开始搭建一个简易的服务器(二)
- 局域网 FTP建立,搭建一个简易的局域网服务器
- node搭建一个简易的静态资源服务器
- QT学习之路(5):一个简易画板的实现
- Git学习(一)git服务器的简易搭建
- 学习笔记之 Servlet容器服务器原理 简易实现代码
- 一个简易的http服务器。
- 理解tomcat之搭建简易http服务器
- 理解tomcat之搭建简易http服务器
- 【python学习笔记】14:开发一个简易的爬虫
- django学习笔记一:搭建简易博客
- 【学习笔记】rabbitmq 简易项目搭建
- SVN服务器的搭建及简易管理
- MySQL之数据存储索引篇(二)
- 使用MFC快速创建一个窗口程序
- 2.2版本回退,复位
- Python入门教程(一)manage.py和django-admin.py的区别
- codeforces 891C
- 搭建一个简易的时间服务器笔记----C++学习之路
- 有关电脑的基本技能
- 使用Construct 2制作HTML5游戏(进阶篇)
- HDU 1905 + POJ 1730 【快速幂】
- Linux系统的软件组成
- 两杯水交换
- Android开发小结——UI开发
- Android UI基础之ListView 和适配器Adapter
- C和指针之字符串之strlen、strcpy、 strcat、strcmp使用总结