Java基础 —— P16.网络编程 (入门) - IDEA

导学

	网络编程;
	UDP通信程序;
	TCP通信程序;

一、网络编程:

· 概述:

1.计算机网络;
   指在不同地理位置的客户端通过通信线连接起来,在网络操作系统、网络管理系统、通信协议管理和协调下,实现资源共享和信息传递的计算机系统;
2.网络编程
  指在网络通信协议下,实现网络互联的不同计算机上运行的程序间可以进行的数据交换;

· 网络编程三要素:

1.IP地址
  IP地址是标识号,想让网络中的两台设备相互通信,就必须为计算机指定一个标识号;
2.端口
  用于区分计算机里的多个程序;

IP地址 —— 网络中的设备;
端口 —— 计算机的引用程序;

3.协议
  在计算机网络中连接和通信的规则被称为协议,通信双方必须遵守相应的协议才可以进行数据交换;

常见的协议:TCP和UDP协议

· 常用类:

InetAddress 此类表示interent协议(IP)地址;

· 常用构造方法:
public static InetAddress getByName(String host); 
  确定主机的IP地址,主机名称可以是机器名称也可以是IP地址;
public String getHostName();
  获取此Ip地址的主机名;
public String getHostAddress();
  返回文本显示中的Ip地址字符串;  

二、UDP通信程序;

·原理:
  1. UDP是一种不可靠的网络协议,在通信两端建立一个Socket对象(用于发送);
  2. 接受数据的对象因此对于基于UDP协议的通信两方而言,并没有客户端和服务端的概念;
·类:

 Java提供了DatagreamSocket类作为UDP协议的Socket对象;

·发送数据步骤:
  1. 创建发送端的Socket对象(DatagramSocket);
  2. 创建数据并打包(DatagramPocket);
  3. 调用发送端的对象方法发送数据(void send);
  4. 关闭端口;

代码演示:

public static void main(String[] args) throw IOException {	
//创建发送端(Dg)的Socket对象;
	DatagramSocket Dg = new DatagramSocket();
 
//创建数据并打包;
	byte[] bys = "你好".getBytes();
	int port = 49413;
	InetAddress ip = InetAddress.geyByName("127.0.0.1");
	DatagramPocket Dp = new DatagramPocket(bys,bys.length,port,ip);
 
//调用发送端(Dg)的对象方法发送数据(void send);
	Dg.send(Dp);
 
//关闭端口;
	Dg.close();
}

·接收数据步骤:
  1. 创建接收端 DatagramSocket(int port)端口;
  2. 创建数据包接收数据; DatagramPocket(byte[ ] , int length)
  3. 调用接收端DatagramSocket的对象方法(void receive)接收数据;
  4. 解析数据包显示在控制台; byte[ ] getData( ) ; int getLength( );
  5. 关闭端口

代码演示:

public static void main(String[] args) throw IOException {
//创建接收端DatagramSocket(int port)端口;
	DatagramSocket Ds = new DatagramSocket(10086);
 
//创建数据包接收数据; DatagramPocket(byte[ ] , int length);
	byte[] bys = new byte[1024];
	DatagramPocket Dp = new DatagramPocket(bys,bys.length);
 
//调用接收端DatagramSocket的对象方法(void receive)接收数据;
	Ds.receive(Dp);
 
//解析数据包显示在控制台;  byte[ ] getData( ) ; int getLength( );
	byte [] data = Dp.getData();  //Byte[] getData();返回数据缓冲区;
	int len = Dp.getLength();
	String dataString = new String(data,0,len); //(0,len)是指获取data的长度;
	System.out.println(dataString);
 
//关闭接收端;
	Ds.close();
}

优化:

 省略14,15行代码,第16行写成:

System.out.println(new String(data,0,Dp.getLength());

三、UDP通信程序;

·原理:

 1.TCP是一种可靠网络协议,在通信两端建立Socket对象,搭建网络虚拟链路,从而通过虚拟链路来进行通信;
  2.拥有客户端和服务器的概念;

Java对TCP网络协议提供了良好的封装,使用Socket对象代表两端的通信端口,并通过Socket产生IO流来进行网络通信;

·类:

 客户端: Socket类;
 服务器: ServerSocket类;

·客户端发送步骤:
  1. 创建通信端接口;
  2. 获取输出流写入数据;
  3. 关闭端口;
创建端口俩方法:
	Socket(InetAddress address , int port);
	Socket(String host,int port);

代码演示:

public static void main(String[] args) throws IOException {
//创建通信端口
	Socket s = new Socket(InetAddress.getByName("127.0.0.1",10086);
 
//获取输出流,写数据;
	OutputStream Ops = s.getOutputStream();
	Ops.write("Tcp is comming now".getBytes());
	InetAddress mac = InetAddress.getLocalHost();
 
//关闭端口;
	s.close(); 	
}

·服务器接受步骤:
  1. 创建服务端; ServerSocket(int port);
  2. 创建监听器; Socket accept( );
  3. 获取输入流,显示在控制台;
  4. 关闭端口;

代码演示:

public static void main(String[] args) throws IOException {
//创建服务器端口;
	ServerSocket Ss = new ServerSocket(10086);
 
//创建监听器; Socket accept( );
	Socket s = Ss.accept();
 
//获取输入流,显示在控制台;
	InputStream Ips = s.getInputStream(); //获取监听s的输入流;
	byte[ ] data = new byte[1024];
	int len = Ips.read(data)String dataString = new String (data,0,len);
	System.out.println(dataString);
 
//关闭端口;
	s.close(); 	
	ss.close();
}
注意:运行的时候需先运行服务器再运行客户端;

·练习;
 1.服务器给客户端给出反馈;
 2.客户端键盘录入信息发送;
 3.服务器数据写入文本文件;
 4.客户端数据来自文本文件;
 5.多线程上传文件;

练习代码待补充;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值