第13周 预习、实验与作业:Java网络编程

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或两个网络调试助手)同时连接该服务器,可以连接成功吗?为什么?

  • 可以,服务器的端口没有被其他进程占用,并且服务器的连接队列没有达到最大连接数限制
posted @ 2023-11-27 21:53  LinusKou  阅读(1)  评论(0编辑  收藏  举报  来源