网络编程(下)

本文深入探讨了TCP和UDP两种网络通信协议的区别。TCP是一种面向连接的协议,它通过ServerSocket和Socket类实现服务器和客户端之间的可靠通信。而UDP则不需要建立连接,计算机间可以任意发送数据。文章详细介绍了如何使用JDK中的ServerSocket和Socket类来实现TCP通信,包括接受客户端连接、获取输入输出流等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TCP通信

UDP不区分客户端与服务器端,计算机之间可以任意的发送数据。TCP是分客户端和服务器端的,在通信时,必须先建立连接才能通信(上一篇写了连接的三步骤)
JDK提供了ServerSocket类实现服务器端,Socket类实现客户端。
通信时,先创建代表服务器端的ServerSocket对象,该对象相当于开启一个服务,并等待客户端的连接,然后再创建代表客户端的Socket对象向服务器端发出请求连接。
ServerSocket包含-一个监听来自客户端连接请求的方法:
Socket accept():如果接收到一个客户端Socket的连接请求,该方法将返回一个与客户端Socket对应的Socket (如图17.4 所示,每个TCP连接有两个Socket);否则该方法将一直处 于等待状态,线程也被阻塞。
在这里插入图片描述
ServerSocket对象负责监听某台计算机的某个端口号,在创建ServerSocket对象后,需要继续调用该对象的accept()方法,接收来自客户端的请求。执行accept方法后,服务器端程序会发生阻塞,直到客户端发出连接请求,accept方法才会返回一个Socket对象用于和客户端实现通信,程序才能继续执行。

Socket
在这里插入图片描述
当客户端、服务器端产生了对应的Socket之后,程序无须再区分服务器端、客户端,而是通过各自的Socket 进行通信。
Socket提供的两个方法获得输入流和输出流:
InputStream getInputStream():返回该Socket对象对应的输入流,让程序通过该输入流从Socket中取出数据。
OutputStream getOutputStream():返回该Socket对象对应的输出流,让程序通过该输出流向Socket中输出数据。

一般的服务器都是多线程的(盲猜群聊就要这样实现),多个客户端访问服务器端时,服务器端为每个客户端创建一个对应的Socket,并且开启一个新的线程使两个Spcket建立专线进行通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值