黑马程序员——java网络编程

——- android培训、java培训、期待与您交流! ———-

网络的概念

网络:一组相互连接的计算机
多台计算机组成
使用物理线路或无线信号进行连接
黑马程序员——java网络编程_第1张图片
网络的优点:
交换数据
资源共享

B/S:浏览器/服务器
浏览器将请求发送给服务器,服务器对请求进行处理,将响应发回浏览器
黑马程序员——java网络编程_第2张图片

C/S:客户端/服务器(Client/Server)
客户端向服务器发出请求,服务器处理请求并将响应发送给客户端(不是浏览器)

黑马程序员——java网络编程_第3张图片

网络通信原理:
IP地址:唯一标识网络上的每一台计算机
TCP/IP:传输控制/网际协议,网络传输的基础
路由交换设备:将数据从一台计算机送到另一台计算机 寻址

黑马程序员——java网络编程_第4张图片

端口:
主机怎么区分不同的网络服务或网络应用程序呢?只靠IP地址行吗?实际上是通过“IP地址+端口号”来区分

端口号是网络应用程序的区分标识,有了端口,计算机就可以知道将收到的数据传给哪一个应用程序。

端口号的范围从0~65535。其中0~1024是系统使用或保留的端口。

使用第三方软件(例如360)可以很方便的查看本机端口情况

网络传输协议:
Transmission Control Protocol/Internet Protocol的简写,即传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。

黑马程序员——java网络编程_第5张图片

java.net包:
Java语言支持网络通信编程,提供了java.net包供程序开发人员使用,该包常用的类有:

InetAddress类,用于表示或存储计算机IP地址

——————–UDP协议—————–
DatagramPacket类,用于表示封装数据的报文类
DatagramSocket类,用于表示收发数据的某一端的Socket

——————–TCP协议—————–
ServerSocket类,用于表示服务器端Socket
Socket类,用于表示客户端Socket

InetAddress类:
在Java中,用 InetAddress类封装或表示IP地址,不能new
黑马程序员——java网络编程_第6张图片

UDP网络编程:
UDP不能保证数据的可靠传输,没有先建立连接,但效率高
UDP网络程序由消息发送方与消息接收方两部分组成,实现起来比较简单
DatagramPacket类,即数据报,用于封装需要发送或接收的数据
黑马程序员——java网络编程_第7张图片

发送端代码模板:
消息发送端:指定消息发送的主机与端口号

// 1.来个手机
DatagramSocket ds = new DatagramSocket();

// 2.信息
String msg = "约吗";

// 3.打包成数据报
DatagramPacket dp = new DatagramPacket(msg.getBytes(),
    msg.getBytes().length, InetAddress.getLocalHost(), 8000);

// 4.发送
ds.send(dp);

// 5.关机
ds.close();

接收端代码模板:
消息接收端:接收发送端发送过来的数据报

//1.来个手机
DatagramSocket ds=new DatagramSocket(8000);

//2.准备接收
byte[] b=new byte[30];
DatagramPacket dp=new DatagramPacket(b, b.length);

//3.接收
ds.receive(dp);   //可阻塞的方法

//4.读取数据
System.out.println(new String(b).trim());

//5.关机
ds.close();

TCP网络编程:
TCP是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接,对发送数据的大小无限制。但是占用资源大,效率低。

1.服务器程序创建一个ServerSocket,然后调用accept方法等待客户端来连接
2-3.客户端程序创建一个Socket并请求与服务器建立连接
4.服务器接收客户的连接请求,accept方法创建一个新的Socket与该客户建立专线连接
5.刚才建立了连接的两个Socket开始双向通信

服务器端代码模板:

ServerSocket server = new ServerSocket(9000); // 秘书
Socket socket = server.accept(); // 秘书在等电话

/// 来电话了
InputStream in = socket.getInputStream();
byte[] temp=new byte[50];
in.read(temp);
System.out.println("收到客户来电:" + new String(temp).trim());

// 回话
OutputStream out = socket.getOutputStream();
out.write("没钱".getBytes());

//关闭
socket.close();

客户端代码模板:

Socket socket = new Socket("127.0.0.1", 9000); // 客户的手机

// 给老板秘书打电话
OutputStream out = socket.getOutputStream();
out.write("还钱啊".getBytes());

// 得到老板秘书回话
InputStream in = socket.getInputStream();
byte[] temp=new byte[50];
in.read(temp);
System.out.println("老板秘书回话:" + new String(temp).trim());

//关闭
socket.close();

——- android培训、java培训、期待与您交流! ———-

你可能感兴趣的:(java)