Java-网络编程
2021-08-25 20:30:01 2 举报
AI智能生成
Java-网络编程
作者其他创作
大纲/内容
概念
定义
链接多个计算机,资源共享,信息交流
分类
局域网,城域网,广域网
网络三大基石
IP:确定位置
端口:逻辑地址,区分不同的服务
协议:http、https、ftp、smtp、ip :确保听懂
https://www.baidu.com/80
协议://ip地址/默认互联网端口:80
域名
域名解析,会将一个域名解析为一个对应的ip地址
模型
OSI/RM
TCP/IP模型
防火墙
Socket编程
TCP
传输控制协议的缩写
需要创建连接
安全
传输数据多
只能一对一
UDP
用户数据报协议
不需要创建连接
不安全
传输数据有限制
支持一对多,多对一
基于TCP的套接字
服务端:ServerSocket
ServerSocket(端口):构造器
Socket accept():阻塞方法(等待接收数据)
setSotimeout(int):设置的超时时间
close():关闭
用户端:Socket
Socket(IP地址,端口):构造器
getInputStream():获取输入流准备接收数据
getOutputStream():获取输出流准备发送数据
getChannel():返回与此文件输出流关联的唯一文件通道对象
close():关闭
基于UDP的套接字
发送/接收端:DatagramSocket
send(DatagramPacket):发送包
receive(DatagramPacket):接收包
发送/接收数据包:DatagramPacket
byte[] getDate():返回数据缓冲区
int getLength():返回要发送的数据的长度或接收的数据的长度
setData(byte[]):设置此数据包的数据缓冲区。
setPort():设置要将此数据报发送到的远程主机上的端口号。
其他
SocketAddress
InetSocketAddress
InetAddress
getByName(String)
getHostAddress()
getLocalHost()
Socket编程实例
TCP编程
服务端
1. 建立TCP服务端Socket服务(设置本地端口号)
ServerSocket server = new ServerSocket(8888);
2. 通过server的accept()获取客户端对象(阻塞)
Socket client = server.accept();
3. 通过client获取读取流,读取客户端发送的数据
InputStream is = client.getInputStream();
4. 通过流对象操作数据
byte[] buf = new byte[1024];
int length = is.read(buf);
5. 关闭资源
client.close();
客户端
1. 建立TCP客户端Socket服务(指定IP和端口号)
Socket client = new Socket(InetAddress.getLocalHost(),8888)
2. 通过Socket的getOutputStream()获取流对象
OutputStream os = client.getOutputStream();
3. 通过流对象的操作方式传输数据
String str= "hello server";
或者:byte[] buf = "hello server".getBytes();
os.write(str.getBytes());
或者:os.write(buf);
4. 关闭资源
client.close();
UDP编程
发送端
1. 建立UDP的Socket服务
DatagramSocket send = new DatagramSocket();
2. 封装数据包
String msg = "udp Hello";
DatagramPacket(字节数据,字节数据长度,目标地址,对方端口)
DatagramPacket packet = new DatagramPacket(msg.getBytes(),msg.getBytes().length,InetAddress.getLocalHost(),10002)
3. 通过Socket的send()发送数据
send.send(packet);
4. 关闭资源
send.close();
接收端
1. 建立UPD的Socket服务,必须指定端口
DatagramSocket rec = new DatagramSocket(10002);
2. 定义数据包用于接收数据
byte[] buf = new byte[1024];
DatagramPacket packet = new.DatagramPacket(buf,buf.length);
3. 接收数据
rec.receive(packet);
4. 通过packet的相应方法获取数据
packet.getData();
packet.getAddress();
packet.getLength();等
5. 关闭资源
rec.close();
0 条评论
下一页