TCP
服务器:(ServerSocket)
步骤:1.创建服务器
ServerSocket server=new ServerSocket(8989);
2.等待链接(链接成功)获得套接字
Socket socket=server.accept();
3.IO通信,接受消息
BufferedReader bufferedInputStream=new BufferedReader(new InputStreamReader(socket.getInputStream(),"utf-8"));
4.关闭链接
socket.close();
server.close();
客户端:(Socket)
步骤:1.创建套接字,并请求服务器
Socket client=new Socket("127.0.0.1", 8989);// host服务器地址,port 端口
2.IO通信,发送消息
BufferedWriter bufferedWriter=new BufferedWriter(new OutputStreamWriter(client.getOutputStream(),"utf-8"));
3.关闭链接
client.close();
OSI七层模型
应用层:应用程序之间的数据交换
表示层:协商数据交换的格式
会话层:客户端的应用程序提供了,打开和关闭以及会话管理的机制
传输层:提供计算机之间进行通信会话,并确保数据的可靠传输
网络层:提供所谓所谓地址链接服务,这些链接协议可处理地址信息和路由器信息,如果发错错误要求重新传送.
数据链路层:网卡地址,同一份配.
物理层:物理介子,二进制流传输
三次握手:(AB主机)
第一次握手:A主机要求建立链接
第二次握手:B主机收请求,然后确认联机信息
第三次握手:A主机收到数据包,检查是否正确,如果正确建立链接
UDP通信
不面向连接,不可靠的协议 快速发送
发送端:
(1) 创建发送地址
InetAddress inetAddress=InetAddress.getByName("localhost");
(2) 创建数据包
byte [] datas="欢迎来到英雄联盟".getBytes();
//数据包 数据 发送地址 对方的端口号
DatagramPacket packet=new DatagramPacket(datas, 0, datas.length, inetAddress, 8848);
(3) 创建套接字设置自己端口号
int port=8989;
DatagramSocket datagramSocket=new DatagramSocket(port);
(4) 利用套接字发送数据包
datagramSocket.send(packet);
(5) 释放资源
datagramSocket.close();
接收端:
(1) 创建数据包
DatagramPacket datagramPacket=new DatagramPacket(datas, datas.length);
(2) 创建套接字设置自己的端口号
DatagramSocket datagramSocket=new DatagramSocket(8848);
(3) 用套接字获得数据包
datagramSocket.receive(datagramPacket);
//数据打印
System.out.println(new String(datas).trim());
(4) 释放资源
datagramSocket.close();
Arrays(包含用于操作数组的各种方法)
List<T> asList(T... a) 返回由指定数组支持的固定大小的列表
byte[] copyOf(byte[] original, int newLength) 复制指定的数组,用零截取或填充,以便复制具有指定的长度
byte[] copyOfRange(byte[] original, int from, int to) 将指定数组的指定范围复制到新数组中
void fill(int[] a, int fromIndex, int toIndex, int val) 将指定的int值分配给指定的int数组的指定范围的每个元素
void parallelSort(byte[] a) 按照数字顺序排列指定的数组
void sort(byte[] a, int fromIndex, int toIndex) 按升序排列数组的指定范围
String toString() 返回指定数组的内容的字符串表示形式