目录

如果我们在没有启动服务器的情况下,直接申请连接响应,就会报错。


灰色部分是我们调用别人的代码里面出现报错的位置
蓝色部分是我们写的代码报错的位置
所以应该先启动服务器,再发出申请

现在在情况是,在服务器 TranslateServer 一直启动的情况下,运行一次连接申请就响应一次,相当于翻译一次,然后连接程序就被断开了终止了。

这个是根据你输入内容再做翻译

现在换一个目标

注释:短链接这也是循环,输入一次,就拨通,发生,挂断一次循环,然后在.....上面写错了
短连接 UserInputLoopShortConnectionClient类

为什么说长链接实现困难呢?因为不仅客户端需要改动,你的服务器也需要改动才能支持,不然运行时会报错(第二遍输入的时候)
短链接服务器 和 长链接客户端就只能执行一次,第二次就会报错。
原因:执行一遍后,服务器就挂断电话了,而长链接的客户端却没有,还在一直发送请求,这样服务器会理你吗?不会!所以需要改造服务器



长链接和短链接的区别:
模拟打电话
短链接:说完一句话就直接挂电话,要说下一句说重新拨通电话说,然后马上就挂断电话。
如果一个人想讲10句话,就需要拨通、挂断电话10次。
长链接:说完一句话后电话没有马上挂断,而是等待,然后对方继续讲话就进行传递,没有消息时就在等待,直到对面明确挂断电话信息,我们这才会挂断电话。
注释:支持长连接的TCP服务器,可以和短连接版本的客户端一起配合
很简单,短链接客户端每次都会发送挂断电话的信息,那么服务器也就随之挂断即可

因为idea不支持,所以我们要修改下


长连接客户端对长服务器

为什么? 服务器一次只能接一个人的电话

总结:反正短链接客户端不会占用服务器,长链接客户端会占用服务器。跟服务器的长短无关


在 TranslateServerLongConnectionThreadPool 类中

1. 了解网络的应用场景
⒉ 学会了一些概念:客户端、服务器、服务、请求、响应、TCP、UDP、有连接、无连接、面向数据报文、面向字节流、应用层协议设计、长连接、短连接
3. 多线程的实际场景应用




如:你发的是 ABCD,别人接收可以是DBAC..之类的
网络的不安全,这两个问题需要交给网络以上的层次来解决
如:传输层和应用层
注释:这不能算是坏处,只能算是网络层的特点,利用这个特点可以使坏,也可以弄出有趣的对象,看人。

网络层本身是不可靠的,UDP又没有做过任何的处理,所以,UDP是不可靠的! !
但是!!!
上面说网络层的问题抛给传输层或应用层来解决
并不是UDP做了什么,才变得不可靠了,而是UDP什么都没做,所以把网络层的不可靠特性直接表达给了应用层所以站在应用层的角度,我们才说UDP是不可靠的!

进程对进程的问题

UDP可以想象成快递公司,负责给货物装箱打上 “标签”


相当于你寄快递,9.9元的东西丢了补发就行,受得起。如果是高考成绩,重要合体等,那就哪怕花点钱也要保证安全送达。



应用层眼中的UDP协议,是没有发送缓冲区的
(UDP协议,把将我们的数据直接处理,立即发送到网卡)

只有第四条是对的。
举例:你妈让你去寄快递,你去了快递站寄好了回家。
你妈问你寄出去了吗,你回答:寄出去了。(这样是对的)
而如果你妈问,寄到了吗,你怎么可能知道有没有寄到,是否能成功寄到,你只能知道已经寄出去了。所以这样问是错的。


注释:把自己想象成快递员工,别人来你这寄快递,你需要先干嘛再干嘛。

