2-3-4-5 获取时间的客户端例子 TCP相关
来源:互联网 发布:数控螺纹g92螺纹编程 编辑:程序博客网 时间:2024/06/05 09:38
1. OSI7层模型 vs 四层模型
2. bzero vs memset
bzero:#include <stringh.h>,不是标准函数,在ANSI中没有定义。
memset:考虑兼容性等问题的时候还是使用memset吧。
3. TCP编程模型
时间服务器的源码如下:
TCP的连接方式之前在tcpip网路编程中一致,尹圣雨的书籍。
设备端连接上服务器后,将服务器的时间发送给客户端。
#include "socket_includes.h"int main(int argc, char *argv[]){int listenfd, sockfd, opt = 1;struct sockaddr_in server, client;char buf[200];socklen_t len;int timep;int ret;listenfd = socket(AF_INET, SOCK_STREAM, 0); if(listenfd < 0){perror("Create socket fail.");return -1; }if((ret = setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) < 0){ perror("Error, set socket reuse addr failed"); return -1; }bzero(&server, sizeof(server)); server.sin_family = AF_INET; server.sin_port = htons(8888); server.sin_addr.s_addr = htonl(INADDR_ANY);len = sizeof(struct sockaddr); if(bind(listenfd, (struct sockaddr *)&server, len)<0){perror("bind error."); return -1; }listen(listenfd, MAX_LISTEN_QUE);while(1){sockfd = accept(listenfd, (struct sockaddr *)&client, &len); if(sockfd < 0){perror("accept error.");return -1; } timep = time(NULL);snprintf(buf, sizeof(buf), "%s", ctime(&timep));write(sockfd, buf, strlen(buf));printf("Bytes:%d\n", strlen(buf));printf("sockfd=%d\n", sockfd);close(sockfd);}return 0;}
4. 三次握手、四次挥手流程
之前的课程中有提到过,这边不再描述,尹圣雨的tcpip编程。
5.网络字节序的转换问题
6. 进程传递到内核的函数:bind、connect、sendto
内核传递到进程的函数:accept, recvfrom,getsockname, getpeername
7. connect经常碰到的错误:
a. 硬错:端口号错误,服务器进程未开启,收到RST,立刻返回ECONNREFUSED;
b. 软错:IP不可达,协议ICMP,比如no route to host,通常是发送arp请求无响应。
8. accept中的最大连接数
对应两个队列:一个是已完成的连接队列;另一个是未完成的连接队列。
最大数指的就是已完成的连接队列最大数。
0 0
- 2-3-4-5 获取时间的客户端例子 TCP相关
- 一个简单的TCP 客户端时间获取程序 ipv4/ipv6
- linux的tcp服务端、客户端例子
- 织网的日子里——第一章:TCP时间获取之客户端和服务器端程序
- 客户端TCP时间获取以及实现服务端获取客户端IP地址
- Tcp客户端登陆小例子
- 小例子--获取格式化的系统时间
- 用ajax获取时间的例子
- linux 获取远程系统时间的例子
- 获取时间和写入文件的例子
- UDP 与 TCP的连接简单例子(服务端/客户端) VC
- linux 服务器/客户端 tcp通信的简单例子
- 时间获取客户端程序遇到的问题
- 在客户端获取服务器端的时间
- 86-时间获取客户端
- 获取客户端时间程序
- C&C++获取时间的相关问题
- socket获取客户端ip例子
- C# 序列化和反序列化
- 2-18
- 面试感悟:一名3年工作经验的程序员应该具备的技能
- 嵌入式系统开发流程
- 从命令行运行 MyBatis Generator
- 2-3-4-5 获取时间的客户端例子 TCP相关
- 内部类
- BSP模型学习
- 【车】当前状况与规划(1)
- MyBatis-Spring配置简单了解
- Java编程题练习2017-02-19
- java基础八类的组成
- c语言和c++中值传递、指针传递和引用传递的比较和区别
- HTTP 请求头中的 X-Forwarded-For