第13周 预习、实验与作业:Java网络编程
文章目录
- 1. 编写一个网络程序,为了与其他网络程序通信,至少要知道对方的什么信息?
- 2. TCP与UDP协议有什么不同的呢?什么时候该选择哪种协议?HTTP使用的是TCP还是UDP?不重要的短信息传送之类的功能更适合使用TCP还是UDP?
- 3. 打开浏览器浏览某个网页,使用资源监视器查看该浏览器使用了什么端口?(打开路径:任务管理器-性能-打开资源监视器) 。使用“curl -v 某个网址”,查看之间的HTTP通信信息,并做记录。
- 4. 使用Socket进行编程,使用的是TCP还是UDP协议?观察TCPClientTest.java,其输入流、输出流哪个是从网络读数据,哪个是向网络发送数据?程序中有出现TCP或UDP协议的细节吗?观察TCPClientTest.java,该程序可以同时进行从网络上读、向网络上写吗?
- 5. 启动TCPEchoServer.java服务器,然后使用两个客户端(比如两个telnet或两个网络调试助手)同时连接该服务器,可以连接成功吗?为什么?
1. 编写一个网络程序,为了与其他网络程序通信,至少要知道对方的什么信息?
- IP地址、端口号、协议、接口或API
2. TCP与UDP协议有什么不同的呢?什么时候该选择哪种协议?HTTP使用的是TCP还是UDP?不重要的短信息传送之类的功能更适合使用TCP还是UDP?
- 连接性:TCP是一种面向连接的协议,它在通信之前需要建立一个可靠的连接。UDP是一种无连接的协议,通信双方直接发送数据包,不需要事先建立连接。可靠性:TCP提供可靠的数据传输,它使用确认机制和重传机制来确保数据的可靠性。如果数据包丢失或损坏,TCP会重新发送丢失的数据包。UDP不提供可靠性保证,它发送的数据包不进行确认,也不进行重传,因此可能会出现丢包或乱序的情况。顺序性:TCP保证数据包按照发送顺序进行传输和接收,接收方会重新排序数据包。UDP发送的数据包不保证按照发送顺序接收。
- 由于TCP的可靠性和连接性,它适合于需要确保数据完整性和顺序性的应用,如文件传输、电子邮件和网页浏览。UDP适用于对传输延迟要求较低、实时性要求较高的应用,如音视频流媒体、实时游戏和DNS(域名系统)查询。
- HTTP协议使用的是TCP作为传输协议。因为HTTP协议需要可靠的数据传输和顺序性,以确保网页内容正确地加载和显示。
- 对于不重要的短信息传送等功能,如果实时性较重要,可以选择UDP协议。UDP的低延迟和较小的通信开销使其适合于快速传输小型数据包,如实时通信应用中的短消息、心跳包等。但需要注意的是,UDP的不可靠性可能导致数据丢失或乱序,因此对数据的可靠性有较高要求的场景应使用TCP。
3. 打开浏览器浏览某个网页,使用资源监视器查看该浏览器使用了什么端口?(打开路径:任务管理器-性能-打开资源监视器) 。使用“curl -v 某个网址”,查看之间的HTTP通信信息,并做记录。
4. 使用Socket进行编程,使用的是TCP还是UDP协议?观察TCPClientTest.java,其输入流、输出流哪个是从网络读数据,哪个是向网络发送数据?程序中有出现TCP或UDP协议的细节吗?观察TCPClientTest.java,该程序可以同时进行从网络上读、向网络上写吗?
- 使用Socket进行编程可以同时使用TCP或UDP协议,具体取决于编程时选择的协议类型。
- 在TCPClientTest.java中,
InputStream
对象是用于从网络读取数据的输入流,而OutputStream
对象是用于向网络发送数据的输出流。 - 该程序中并没有直接出现TCP或UDP协议的细节。
- 该程序可以同时进行从网络上读取数据和向网络上写入数据。它通过创建一个Socket对象并获取输入流和输出流,可以在同一个程序中进行读写操作,实现双向的网络通信。
5. 启动TCPEchoServer.java服务器,然后使用两个客户端(比如两个telnet或两个网络调试助手)同时连接该服务器,可以连接成功吗?为什么?
- 可以,服务器的端口没有被其他进程占用,并且服务器的连接队列没有达到最大连接数限制