Java网络编程

Java网络编程

IO的拓展,即在网络中进行IO。

TCP/IP模型

  • 应用层:常见协议HTTP,  FTP,  DNS;
  • 传输层:常见协议TCP, UDP; 传输单位segment;
  • 网络层:常见协议IP; 传输单位packet;
  • 数据链路层:传输单位frame;
  • 物理层: 传输单位bits

套接字IP与端口号组成了套接字Socket,如HTTP(80)。网络通信实际上是Socket间的通信,数据在socket间以IO流的形式传递。

通信协议TCP(要求三次握手,可靠,需要释放连接)UDP(无需连接,不可靠,效率高)


TCP案例

客户端流程

  1. 创建Socket对象,指明服务器端IPport
  2. socket创建输出流
  3. 输出流发送信息;
  4. 关闭流和socket
服务器端流程:
  1. 创建ServerSocket指明监听的端口
  2. 通过serversocket.accept( )ServerSocket创建用于接收数据的socket
  3. socket创建输入流
  4. 输入流接收数据;
  5. 关闭流和socket

如果需要由服务器端返回信息,并由客户端接收。此时客户端需要获取socket的输入流并读取数据。服务器端则要获得socket的输出流并向其中写入数据。但在服务器端输出前,客户端要首先关闭输出流。这是因为服务器端的输入流是阻塞式的,所以服务器端会一直等待来自客户端的数据。在等待过程中,服务器端无法执行后续任何其他任务。因此,需要客户端通知服务器端传输任务已经完成。

服务器端也可以将接受的信息保存,此时需要一个文件输出流。例:由客户端向服务端传输一个文件。服务端保存文件并返回确认给客户端。


UDPDatagramSocketDatagramPacket

发送端:通过DatagramSocket发送DatagramPacket,即ds.send(p)。在每个DatagramPacket中指明接收端的IP和端口。

接收端:通过DatagramSocket监听端口,并通过ds.receive(p)接收DatagramPacket

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值