Skip to content

Commit

Permalink
[update]更新说明
Browse files Browse the repository at this point in the history
  • Loading branch information
Realself-Ma authored Nov 15, 2020
1 parent a773f25 commit 188c1f8
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion 遇到的困难.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
#### 联网模式遇到的困难

1. 服务器生成的地牢字符串,客户端接收不完整?
- 经过不断的调试后发现,原因是TCP传输中,当传输的数据量较大时,不会一次RTT就把所有的信息传输完毕,而是需要经过多次RTT才能传输完成。而原来客户端的代码逻辑是从服务器一接收到数据就开始处理,对于数据较大的情况,可能没接收到完整的数据就开始处理了,这样就会出错
- 经过不断的调试后发现,在接收缓冲区数据量大的时候,Qt的read()函数,不能一次将接收缓冲区的数据全部读取完毕,需要多次才行。所以,在第一次读取到数据就开始进行处理肯定是不对的
- 改进的方法是:服务器发送给客户端的消息都会加一个Head,用来指示传递的消息长度。这样,客户端第一次接收到数据时,就会去获取到整个消息的长度,只要当前接收的数据长度没有到达Head指示的大小就一直等待接收消息,直到接收到完整的消息,才会开始进行处理。
2. 两名用户同屏操作时,可能会有多个请求同时到达服务器,这时服务器不能正常响应请求?
- 解决办法是:客户端的请求都加上一个终止标志位,服务器在接收到一长串请求消息时,根据这个终止位来拆分不同的请求,将这些请求消息存放到一个容器中,最后,再从容器中依次取出请求消息来做出响应。
Expand Down

0 comments on commit 188c1f8

Please sign in to comment.