Java网络编程

12 篇文章 17 订阅

TCP/UDP协议(网络传输过程中,数据的传递两种最常见的形式)

TCP传输控制协议:是一种面向连接的、可靠的、基于字节流的传输层通信协议

需要首先在网络两端建立安全连接,再进行数据传递,确保网络双方完整无误地传输数据

UDP用户数据报协议:是一种无连接的传输层协议,提供面向事务简单不可靠信息传送服务

无需建立网络双方连接,直接发送数据包(包含目的地址信息),可能会因为网络问题导致数据传输失败等问题,但是传输速度很快,常用于局域网中传输数据

网络编程:网络编程是基于“请求-响应”模式的

客户端/服务器端模式(C/S模式):对于不同的服务器端程序建立不同的客户端程序

需要同时开发客户端应用程序和服务器端应用程序

客户端应用程序开发步骤

客户端建立与服务器端的连接(通过IP地址和端口确定服务器端程序)

客户端封装请求数据,发送给服务器端;客户端获得服务器端响应数据,解析并处理数据

客户端关闭网络连接

服务器端应用程序开发步骤

服务器端监听特定端口

服务器端接收客户端连接

服务器端接收客户端请求数据,解析并处理请求数据;服务器端封装响应数据,发送给客户端端

服务器端关闭网络连接3

浏览器/服务器端模式(B/S模式):对于不同的服务器端程序使用统一的“客户端”

只需要开发服务器端应用程序即可

通过互联网对其进行访问的应用系统,即基于B/S架构的应用系统(网站就是Web应用的典型示例)

Java网络编程核心类

java.net.*:网络类包,涵盖常用网络操作类

java.io.*:数据消息传输包,在网络双方进行数据传递需要使用该包中的类

 

URL类:统一资源定位符,指向互联网“资源”的指针

URL(String url);      // 通过给定字符串建立URL对象

InputStream  openStream(); //打开当前URL连接的输入流

URLConnection  openConnection();   // 建立URL网络连接

URLConnection应用程序和 URL 之间的通信链接,用于读取和写入此 URL 引用的资源

通过URL对象的openConnection()方法创建

使用构造方法:URLConnection( URL  url)

获得响应消息头类方法:getContentType()、getContentLength()、getContentEncoding()、……

获得响应消息主体:getContent()

获得当前连接输入/输出流对象:getInputStream()、getOutputStream()

HttpURLConnection:特定支持HTTP协议的URLConnection

通过URL对象的openConnection()方法创建,强制转换为目标对象

使用构造方法:HttpURLConnection( URL  url)

从URLConnection类继承的方法

针对HTTP请求响应消息的特定方法:getRequestMethod()、setRequestMethod()

getResponseCode()、getResponseMessage()、……

URL网络编程实例:文件下载

              

URL网络编程实例:获取响应信息

 

Socket类:客户端套接字类。实现客户端向服务器发送数据、接收服务器数据等功能;实现服务器端向客户端发送数据、接收客户端数据等功能

构造方法:Socket(InetAddress  address, int  port);

Socket(String  host,  int  port); 

getInputStream();      // 获得网络输入流

getOutputStream();       // 获得网络输出流

close();                     // 关闭Socket连接

ServerSocket:服务器端套接字类。监听服务器指定端口,接收客户端连接请求

构造方法:ServerSocket(int  port)

accept();          // 用于产生“阻塞”,直到接收一个连接,返回close();  // 关闭服务器端Socket监听

单服务器端接收多次通讯

 

单服务器端多线程接收多次通讯

UDP网络编程

建立网络连接时,有两种传输层协议(TCP传输协议和UDP传输协议)

 

DatagramSocket:客户端/服务器端网络Socket端口对象

DatagramSocket();   // 创建一个空的Socket对象

DatagramSocket(int  port);  // 创建指定监听端口的Socket对象

void  send(DatagramPacket  p);  // 发送数据报文

void  receive(DatagramPacket  p);  // 接收数据报文

DatagramPacket:数据报文对象

DatagramPacket(byte[]  buf, int len);  // 用空数组创建对象,用来接收数据

DatagramPacket(byte[] buf, int offset, int len);  // 接收数据的特定部分

DatagramPacket(byte[] buf, int len, InetAddress addr, int port);  // 包含数据的数组创建对象,用来发送数据,同时指明数据目的地和目标端口号     // 发送数据的指定部分

  • 125
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 43
    评论
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兔老大RabbitMQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值