实现一个多进程并发的服务器

项目来源:登录—专业IT笔试面试备考平台_牛客网

该课程教授了如何使用socket API实现一个基于TCP协议的多进程并发的服务器。实现服务器之前,首先了解一下TCP通信的流程和所要用的各个API。

1.TCP通信流程

TCP通信中,发起连接请求的一端称为客户端,被动接受连接的一端称为服务端。

服务端:

1.创建一个用于监听的套接字
        -监听:监听客户端的连接
        -套接字:一个socket文件描述符……socket()
2.将这个监听文件的文件描述符和本地IP和端口绑定(也就是绑定socket地址信息)……bind()
        -客户端连接服务器的时候使用的就是这个IP和端口
3.设置监听,监听文件描述符开始工作(客户端socket文件给服务端socket文件的读缓冲区发送数据,服务端socket就是监听自己的读缓冲区有无数据,该过程由OS完成)……listen()
        -监听本身不接受请求,发现缓冲区有连接后会转去下一步
4.阻塞等待,直到客户端发起连接,接收客户端连接后会产生另一个用于和客户端通信的socket……accept()
5.通信。……Window:recv()/send() Linux:read()/write()
6.通信结束,关闭连接。……close()

为什么监听到请求后要发起另一个socket用于和客户端通信?

假设有两个客户端先后发起连接而用同一个socket接受连接和进行通信,接受第一个客户端连接后socket开始通信,这个时候第二个客户端也发了一个请求过来,socket这边如果接受请求就得同时跟两个客户端进行通信,而socket文件中只能记下一个客户端的地址信息,这不就乱套了吗。因此必须将接受连接的socket和用于通信的socket区分开来,用一个socket专门接受连接,有多少个连接进来就新建多少个socket与之通信。

这也体现了TCP面向连接的特点,即通信只能是一对一的,一个socket对应一个socket。

 客户端:

1.创建一个用于通信的套接字。(端口号由os自动分配的)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值