Java基础学习 day_15 网络编程

网络编程

分为局域网,城域网,广域网

OSI(Open System interconnection) 开放式系统互联

在这里插入图片描述

Tcp/Ip模型

在这里插入图片描述

三次握手四次挥手

TCP/UDP

在这里插入图片描述

端口号

TCP端口号:0~65535
UDP端口号:0~65535
一个端口号只能被一个程序使用。
一个程序可以占用多个端口号。

常用端口号
MySql3306
Oracle1521
Tomcat8080
SMTP25
Web服务器80
FTP服务器21
Web安全服务器443

在这里插入图片描述

InetAddress类

//获取本机
InetAddress ia=InetAddress.getLocalHost();
ia.getHostName();//获得主机名
ia.getHostAddress();//获得主机ip地址
//获取局域网
InetAddress ib= InetAddress.getName("ip地址");//获得别的主机对象
ib.isReachable(time);//是否可达
//获取外网
InetAddress ib= InetAddress.getName("域名/主机名");
//获取域名的多个ip
InetAddress[] ics=InetAddress.getAllByName("域名/主机名")

Socket&&ServerSocket(套接字&&服务套接字)

服务端

//创建服务器套接字,并绑定端口号
ServerSocket listener = new ServerSocket(8888);
//监听客户端连接
Socket socket = listener.accept();
//获取输入流
InputStream inputStream = socket.getInputStream();
//转换流
BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream,"utf-8"));
//读取数据
String s = reader.readLine();
System.out.println(s);
//关闭资源
reader.close();
inputStream.close();
socket.close();
listener.close();

客户端

//创建套接字
Socket socket = new Socket("10.0.139.195",13579);
//获取输出流
BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"utf-8"));
//处理数据
writer.write("你好");
writer.flush();
//关闭资源
writer.close();
socket.close();

Java的socket是一个全双工套接字,任何的输入流或输出流的close()都会造成Socket关闭。

UDP

在这里插入图片描述
DatagramSocket:
数据报套接字是包投递服务的发送或接收点。每个在数据报套接字上发送或接收的包都是单独编址和路由的。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。

UDP协议的发送方
1.创建datagramSocket,可以不提供端口号,自动分配端口号
2.创建Datagrampacket,发送数据包
3.发送
4.关闭

//创建DataGramSocket
DatagramSocket socket = new DatagramSocket();
//创建发送包
String s="你好啊";
byte[] bytes =s.getBytes();
DatagramPacket packet = new DatagramPacket(bytes, bytes.length, InetAddress.getByAddress("10.0.139.119".getBytes()),8888);
//发送
socket.send(packet);
//关闭
socket.close();

UDP协议的接受方
1.创建datagramSocket,指定端口号
2.创建datagrampacket,接受数据包
3.接收,阻塞方法,接收到数据才返回
4.关闭

//创建datagramSocket
DatagramSocket socket = new DatagramSocket(8888);
byte[] bytes=new byte[1024*4];
//创建包
DatagramPacket packet = new DatagramPacket(bytes, bytes.length);
//接受
socket.receive(packet);
//输出数据
String s=new String(packet.getData(),0,packet.getLength());
System.out.println(s);
//关闭
socket.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值