通过调用connect()建立一个端到端的连接,就可以和TCP一样使用send()/recv()传递数据,而不需要每次都指定目标IP和端口号。但是它和TCP不同的是它没有三次握手的过程。 2).可以通过在已建立连接的UDP套接字上,调用connect()实现指定新的IP地址和端口号以及断开连接。 14.socket编程,如果client断电了,服务器如何...
大致的方法是:服务器端在一个 定时事件中 定时向客户端发送一个短小的数据包,然后启动一个线程,在该线程当中不断检测客户端的ACK应答包。如果在定时时间内收到了客户端的ACK应答包,说明客户端与服务器端的TCP连接仍然是可用的。但是,如果定时器已经超时、而服务器仍然没有收到客户端的ACK应答包,即可以认为客户端...
3)select还是epoll都需要内核把FD消息通知给用户空间,epoll是通过内核于用户空间mmap同一块内存实现的,而select则做了不必要的拷贝 8.网络中,如果客户端突然掉线或者重启,服务器端怎么样才能立刻知道? 若客户端掉线或者重新启动,服务器端会收到复位信号,每一种tcp/ip得实现不一样,控制机制也不一样。 9. TTL是什...
14.socket编程,如果client断电了,服务器如何快速知道? 使用定时器(适合有数据流动的情况); 使用socket选项SO_KEEPALIVE(适合没有数据流动的情况); 1)、自己编写心跳包程序,简单的说就是自己的程序加入一条线程,定时向对端发送数据包,查看是否有ACK,根据ACK的返回情况来管理连接。此方法比较通用,一般使用业务层心跳...
一、嵌入式C语言面试回忆 主观题: 1、在嵌入式系统中,volitate的作用是什么?并给出三个不同的例子。 答:一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器...
忘记相隔了多少天,某一天晚上一个小姐姐打电话约时间面试。。 自我介绍 看你一面说过中间人攻击,你介绍一下 中间人攻击 首先它是指攻击者与通信两端分别建立联系,使得通信双方认为在和私密的连接与对方通信,但事实上整个会话都被攻击者控制。其详细过程。 1) 客户端发送请求到服务端,请求被中间人截获。 2) 服务...
CC++Linux后端服务器10家大厂开发面试题全集进群:1023370945 3. 设计高并发系统数据库层面该如何设计? 数据库锁有哪些类型?如何实现? 1. 分库分表: 同样量的数据平均存储在不同数据库相同表(或不同表)中,减轻单表压力,如果还是很大,就可以每个库在分多张表,根据hash取值或者其他逻辑判断将数据存储在哪张表中 ...
C++ 虚函数这是面试初、中级 C++ 职位一个概率 95% 以上的面试题。一般有以下几种问法: 1.在有继承关系的父子类中,构建和析构一个子类对象时,父子构造函数和析构函数的执行顺序分别是怎样的? 2.在有继承关系的类体系中,父类的构造函数和析构函数一定要申明为 virtual 吗?如果不申明为 virtual 会怎样?
三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于 SYN_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
1、如果客户端断开了网线,服务器端的状态机会怎么改变? 2、客户端的用户发现自己1000块钱变成500块钱,服务器端发现它的账户根本没有操作过,从服务器端应该如何进行排查? 3、下载器中一开始下载速度是比较慢的,突然某一段时间下载速度会达到峰值,从TCP协议来解释为什么会这样?