socket是一个网络通信接口,用于接受发送数据,应用程序通过创建socket对象,应用程序通过socket将要发送的数据传递内核缓冲区,然后内核使用协议对此进行包装,再由内核调用网络接口发送到目标主机,接收请求和数据时,实际上也是由内核监听相应的socket,当有数据读入时,内核会将其送到缓冲区,然后由应用程序来读,因此,应用程序是工作在操作系统之上。
对于socket的理解,可以将他类比作和stm32通信的虚拟串口,pc机可以通过虚拟串口和stm32的串口建立连接并通信,而这一过程实际是由驱动程序完成的,因此对于socket而言,绑定好ip和端口,还有协议类型的socket和底层协议栈就好比虚拟串口,而内核就好比驱动程序,内核通过socket和底层协议栈发送和接受数据
需要注意的是当多个客户连接到一个服务器,服务器必须并发的处理请求,即要由父进程监听请求,然后由子进程并发处理请求,子进程最好拥有自己独立的socket,若全部都从父进程那里复制过来,可能会引起资源冲突