01_server.c (1)这个基础版本的TCP网络通信只能进行一次固定的客户端与服务器 收发数据,不能进行第二次 02_server.c (2)这是第二个版本的代码,可以达到客户端与服务器随机的收发数据 可以是服务器发一次,客户端回应一次,反过来也可以 也可以是服务器连着发几次,然后客户端在回一次或者几次,这个客户端 与服务器都是可以随便发的 但是这个版本的问题是,任何一端断开了,对端死循环,也就是一直打印 03_server.c (3)这是第三个版本,解决了自己关闭的时候,对端一直死循环的问题,但是又会有 一个新的问题,比如:客户端断开了,服务器也挂了 正常的情况是,服务器要一直运行,任何一个客户端断开都不能导致服务器断开 如果有多个客户端连接服务器,确实三次握手是可以走完,但是第二个连接不能 与服务器进行传输数据,原因是:这个连接还只在listen的全连接队列中,并 没有被取出来,而第一个已经取出来,所以第一个可以收发数据 所以第三个版本需要解决的问题是: 第一:客户端断开,不能让服务器断开; 第二:客户端可以多个都连接到服务器,并且还可以与服务器通信 04_server.c (4)为了解决第三个版本的问题,所以有如下步骤: 第一:需要将accept放在while循环中,第二:需要改客户端断开的时候 对文件描述符的修改 解题思路: 第一步:如何知道客户端连接上来了呢,所以可以监听listen_fd,如果 其就绪,就可以调用accept函数从全连接队列中取出来 第二步:服务器需要在终端输入数据,然后将其发送给客户端 第三步:客户端发送数据给服务器的时候,服务器应该去读客户端 发送的数据,所以需要监听conn_fd 解决了客户端断开,服务器不受到任何的影响,也就是客户端断开,服务器不断开的特点 但是又有新问题,客户端连接一个是ok的,但是两个客户端都连接的时候,只有第一个 客户端可以与服务器进行传输数据,第二个客户端是不能与服务器传输数据的 也就是说这份代码只能让一个客户端与服务器建立连接并且传输数据 05_server.c (5)这个版本在上一个版本的基础上,解决了服务器可以同时监听多个客户端,并且 每个客户端与服务器都可以收发数据
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。