导学
网络编程;
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通信程序;
·原理:
- UDP是一种不可靠的网络协议,在通信两端建立一个Socket对象(用于发送);
- 接受数据的对象因此对于基于UDP协议的通信两方而言,并没有客户端和服务端的概念;
·类:
Java提供了DatagreamSocket类作为UDP协议的Socket对象;
·发送数据步骤:
- 创建发送端的Socket对象(DatagramSocket);
- 创建数据并打包(DatagramPocket);
- 调用发送端的对象方法发送数据(void send);
- 关闭端口;
代码演示:
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();
}
·接收数据步骤:
- 创建接收端 DatagramSocket(int port)端口;
- 创建数据包接收数据; DatagramPocket(byte[ ] , int length)
- 调用接收端DatagramSocket的对象方法(void receive)接收数据;
- 解析数据包显示在控制台; byte[ ] getData( ) ; int getLength( );
- 关闭端口
代码演示:
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类;
·客户端发送步骤:
- 创建通信端接口;
- 获取输出流写入数据;
- 关闭端口;
创建端口俩方法:
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();
}
·服务器接受步骤:
- 创建服务端; ServerSocket(int port);
- 创建监听器; Socket accept( );
- 获取输入流,显示在控制台;
- 关闭端口;
代码演示:
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.多线程上传文件;
练习代码待补充;