unix网络基础-显示客户IP地址和端口号的时间获取服务器程序
来源:互联网 发布:大数据平台的优势 编辑:程序博客网 时间:2024/05/22 10:30
显示客户IP地址和端口号的时间获取服务器程序
该服务器程序实现了显示客户的IP和端口号的功能。
以下是实现的代码:
#include "unp.h"#include <time.h>intmain(int argc, char **argv){ intlistenfd, connfd; socklen_t len; struct sockaddr_in servaddr, cliaddr; 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);/* daytime server */ Bind(listenfd, (SA *) &servaddr, sizeof(servaddr)); Listen(listenfd, LISTENQ); for ( ; ; ) { len = sizeof(cliaddr); connfd = Accept(listenfd, (SA *) &cliaddr, &len); printf("connection from %s, port %d\n", Inet_ntop(AF_INET, &cliaddr.sin_addr, buff, sizeof(buff)), ntohs(cliaddr.sin_port)); ticks = time(NULL); snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks)); Write(connfd, buff, strlen(buff)); Close(connfd); }}
1.time.h 是c99的,也就是c的库函数。
sys/time.h是Linux系统的。
time.h既然是c库函数,那么在具体的平台上,就就可以依靠平台而实现,所以看上去是与平台无关的,谁都可以调用.
而 sys/time.h 只是在linux系统上可以调用。
2.SOCK_STREAM提供面向连接的稳定数据传输,即TCP协议。SOCK_STREAM应用在C语言socket编程中,在进行网络连接前,需要用socket函数向系统申请一个通信端口。
3.AF_INET IPv4协议
4.INADDR_ANY INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。 一般来说,在各个系统中均定义成为0值。
5.Linux下inet_pton和inet_ntop这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“二进制整数”之间转换。而且,这2个函数能够处理ipv4和ipv6。算是比较新的函数了。这个函数转换网络二进制结构到ASCII类型的地址,参数的作用和inet_pton相同,只是多了一个参数socklen_t cnt,他是所指向缓存区dst的大小,避免溢出,如果缓存区太小无法存储地址的值,则返回一个空指针,并将errno置为ENOSPC。
6.ntohs函数的功能是将16位网络字符顺序转换成主机字符顺序。头文件 netinet/in.h 。返回对应的顺序。
0 0
- unix网络基础-显示客户IP地址和端口号的时间获取服务器程序
- 【unix网络编程】4-11显示客户IP地址和端口号的时间获取服务程序
- unix网络基础-TCP时间获取客户程序
- UNIX网络编程学习(8)--服务器端显示客户端的IP地址和端口号
- 时间获取的客户和服务器程序
- unix网络基础-TCP时间获取服务器程序
- 在C#中服务端如何获取客户端的IP地址、端口号以及客户端和服务器连接的时间
- Unix网络编程实践:时间获取客户程序
- 简单的获取服务器时间程序(UNIX网络编程)
- UNIX网络编程,时间获取服务器的搭建,程序运行
- TOMCAT 获取服务器ip地址和端口号
- Unix网络编程:关于编译并测试TCP时间获取的客户程序
- TCP的时间获取客户程序和时间获取服务器程序
- 获取客户的IP地址
- UNIX网络编程练习-获取客户端IP和端口
- boost显示本地和远程的IP地址、端口号
- Unix网络编程实践:时间获取服务器程序
- 根据域名获取ip地址、端口、服务器类型和标题
- 二维数组中的查找
- NsObject的load和initialize方法
- 站在巨人的肩膀上
- 拆轮子系列之一步一步教你写FlowLayout
- Invert Binary Tree
- unix网络基础-显示客户IP地址和端口号的时间获取服务器程序
- Vector中的查找
- SQL中CASE关键字的使用
- 关于android studio 打断点无效问题
- 蓝桥杯 基础练习 高精度加法
- C语言对文件加上密码
- Android studio 开发前的配置
- commons-flieupload进行多文件上传的代码
- Java四种线程池的使用