java基础11( 网络编程)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础11( 网络编程)相关的知识,希望对你有一定的参考价值。
网络编程三要素
IP:一个计算机的标识
端口:应用程序都会对应一个端口,用来进行通信,有效端口:0~65535,其中0~1024系统使用或保留端口。
协议:两种协议(UDP,TCP)
特殊IP地址:127.0.0.1本地回环地址用来做一些本地测试
pingIP地址; 用来检测本机是否可以和指定的IP地址的计算机可以进行正常通讯
ipconfig 用来查看IP地址
xxx.xxx.xxx.255 广播地址
端口:
物理端口:物理设备对应的端口, 网卡口
逻辑端口:用来标示我们的计算机上的进程,就是上文所说的端口
协议:
UDP
把数据打成一个数据包 , 不需要建立连接
数据包的大小有限制不能超过64k
因为无连接,所以属于不可靠协议(可能丢失数据)
因为无连接 ,所以效率高
TCP
需要建立连接,形成连接通道
数据可以使用连接通道直接进行传输,无大小限制
因为有链接,所以属于可靠协议
因为有链接,所以效率低
2.InetAddress类
A.InetAddress概述:IP地址的描述类,为了方便我们对IP地址的获取和操作,java提供了一个类
InetAddress 供我们使用,此类表示互联网协议 (IP) 地址。
B.InetAddress类的常见功能
public static InetAddress getByName(String host)( host: 可以是主机名,也可以是IP地址的 字符串表现形式)
public String getHostAddress()返回 IP 地址字符串(以文本表现形式)。
public String getHostName()获取此 IP 地址的主机名。
//通过主机IP获取inetaddress对象
InetAddress address = InetAddress.getByName("192.168.20.16");
//返回 IP 地址字符串(以文本表现形式)
System.out.println(address.getHostAddress());
//获取此 IP 地址的主机名
System.out.println(address.getHostName());
3.UDP协议
UDP协议:
UDP通信步骤:
发送端步骤(客户端):
A.创建UDP发送数据端Socket对象
B.创建数据包,并给出数据,把数据打包
C.通过Socket对象发送数据包
D.释放资源
接收端步骤(服务器端):
A.创建UDP接收数据端Socket对象
B.创建一个接收数据的数据包
C.接收数据,数据在数据包中
D.解析数据包,并把数据显示在控制台
E.释放资源
package com.xayd_03;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
// UDP协议接收数据步骤:
// A:创建UDP接收数据端Socket对象
// B:创建一个接收数据的数据包
// C:接收数据,数据在数据包中
// D:解析数据包,并把数据显示在控制台
// E:释放资源
public class udpServer {
public static void main(String[] args) throws Exception {
//创建UDP接收数据端Socket对象
DatagramSocket ds = new DatagramSocket(2222);
//创建一个接收数据的数据包
byte [] bys = new byte [1024];
int len = bys.length;
DatagramPacket dp = new DatagramPacket(bys, len);
//接收数据
while(true){
ds.receive(dp);
//解析数据包,并把数据显示在控制台
byte[] data = dp.getData();
int length = dp.getLength();
System.out.println(new String(data,0,length));
}
}
}
package com.xayd_03;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
// UDP发送数据的步骤:
// A:创建UDP发送数据端Socket对象
// B:创建数据包,并给出数据,把数据打包
// C:通过Socket对象发送数据包
// D:释放资源
public class udpClient {
public static void main(String[] args) throws Exception {
//创建udp发送数据端socket对象
DatagramSocket ds = new DatagramSocket();
InetAddress address = InetAddress.getByName("192.168.20.16");
int port = 2222;
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
String line;
while((line=sc.nextLine())!=null){
//键盘录入数据
byte [] buf = "hello".getBytes();
int len = buf.length;
DatagramPacket dp = new DatagramPacket(buf, len, address, port);
//发送数据
ds.send(dp);
}
//释放资源
ds.close();
}
}
4.TCP协议
TCP协议:
TCp协议通信步骤:
发送端(客户端):
A.创建TCP协议发送端Socket对象,指定服务器IP及端口
B.获取输出流,并写数据
C.释放资源
接收端(服务器端):
A.创建TCP协议接收端Socket对象
B.监听客户端连接
C.获取输入流,并读取数据,显示在控制台
D.释放资源
package com.xayd_05;
//用TCP协议写一个数据的发送和接收,接收端接收到数据之后给发送端一个反馈
import java.io.OutputStream;
import java.net.Socket;
public class tcpClient {
public static void main(String[] args) throws Exception {
//创建tcp客户端的socket对象
Socket sk = new Socket("192.168.20.16",2222);
//从通道中获取输出流对象
OutputStream os = sk.getOutputStream();
//给通道中写数据
os.write("how are you".getBytes());
//释放资源
sk.close();
}
}
package com.xayd_05;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class tcpServer {
public static void main(String[] args) throws Exception {
//创建TCP协议接收端Socket对象
ServerSocket ss = new ServerSocket(2222);
//监听客户端连接
Socket sk = ss.accept();
//从通道中读取来自客户端的数据
InputStream is = sk.getInputStream();
//获取输入流,并读取数据,显示在控制台
byte[] bys = new byte[1024] ;
int len = is.read(bys) ;
System.out.println(new String(bys,0,len));
//给客户端反馈
OutputStream os = sk.getOutputStream();
os.write("fine,thinks".getBytes());
//释放资源
sk.close();
}
}
以上是关于java基础11( 网络编程)的主要内容,如果未能解决你的问题,请参考以下文章
错误记录Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | Android Studio 降级 )(代码片段
错误记录Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | Android Studio 降级 )(代码片段