1.怎么修改文件标志位?
用fcntl函数,先获取旧的文件标识位,再加上需要的属性(O_NONBLOCK等),最后将标识位设置回去。
2.UDP本地通信需要注意哪些方面?
服务器如果需要获取客户端的IP等参数,客户端就需要绑定套接字来传递参数。如果没有绑定,系统不会自动进行绑定套接字文件。
3.基于UDP的聊天室如何实现群发?
当客户端登陆后,在服务器端创建链表,记录每一个客户端的地址等信息,存放发送过来的数据。当需要发送消息时,遍历链表找到对应的客户端,发送消息。
4.如何实现并发服务器,并发服务器实现方式有什么异同?
可以使用多线程、多进程,要求运行在有操作系统的内核上。
IO多路复用,select和poll,select解除阻塞后,会将其他的文件描述符从集合中删除,poll不会。
poll需要定义数组大小。
5.TCP的三次握手?
1.客户端向服务器发送连接请求
2.服务器收到后应答,发送连接请求
3.客户端收到后应答。
6.进程线程区别?
进程是资源分配的最小单位,线程是任务调度的最小单位,进程消耗资源多,线程少,进程分为用户空间和内核空间。
共同点:调度机制都是时间片轮询上下文切换,都能实现多任务并发执行。
7.文件IO和标准IO的区别?
标准IO=文件IO+缓冲区。标准IO是文件IO的二次封装。文件IO依赖文件描述符,标准IO依赖文件指针。每次进行文件IO,系统都会从用户空间和内核空间进行切换,标准IO增加了缓冲区,提高了效率。
标准IO使用的是库函数,文件IO使用的是系统调用。
8.值传递和地址传递的区别?
值传递不会改变指针的地址,地址传递改变的是指针指向的地址,地址改变对应的值也会随之改变。
9.函数参数存在的意义?
参数分为有参和无参。无参函数在哪通过改变函数内的变量来影响需要改变的参数,有参函数可以通过返回值来传递地址和值。由于函数结束后函数内定义的变量生命周期结束,有参函数方便进行数据交换。