一、计算机网络的基本概念
1、计算机网络
(1)、概念:计算机网络即通过通信线路相互连接,使其能够交换数据、共享资源、协同工作。
(2)、组成:计算机网络由计算机、设备硬件、协议、服务组成一个局域网、广域网、互联网。
2、网络协议
(1)、目的:设计网络通信规则、标准、服务。
(2)、内容:数据格式、传输效率、传输控制。
二、Java通信协议
传输层协议模式
TCP(传输控制协议):
TCP相对于UDP比较稳定的传输协议,这里存在三次握手,保证连接状态,同时有明确的客户端和服务端之分 TCP服务中需要服务器端先启动,需要监听指定端口,等待客户端连接。 客户端主动连接服务器,和服务器连接之后,才可以进行数据交互,服务器不能主动连接客户端的。简单来说TCP类似打电话的通信协议,必须保证双方都在线时才能传输数据。
UDP(用户数据报协议):
UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一个台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。简单来说UDP类似发短信的过程,双方不必要都在线。
(本章主要围绕TCP展开)
三、Java Socket模型
1、套接字
- 启动server socket,监听在本机某个端口是否有socket连接,若存在也会创建一个socket对象
- 存在一对socket对象,通过从socket对象获取流信息,并进行数据传输
2、网络IO流
- 输入流:从对方向本方输入
- 输出流:本方向对方输出
四、代码实现
实现简单的TCP传输可以创建两个客户端
1、客户端A
public class ASide {
public static void main(String[] args) {
try {
//创建TCP的Socket对象并初始化目标端口
ServerSocket socket = new ServerSocket(58888);
//输出当前IP地址
System.out.println("初始化完成"+socket.getInetAddress() + "");
System.out.println("监听中");
//当监听到有端口向A发送信息时接收数据
Socket A = socket.accept();
//输出连接地址
System.out.println("当前连接为:"+A.getInetAddress());
//信息发送
//从控制台获取输入信息
String message = new Scanner(System.in).next();
//将输入信息转化为字节形式并保存在列表中
byte [] data = message.getBytes();
//新建输出流,开始向对方发送信息
OutputStream os = A.getOutputStream();
//传入需要发送的数据
os.write(data);
//刷新
os.flush();
//关闭服务,避免资源占用
os.close();
A.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
2、客户端B
public class BSide {
public static void main(String[] args) {
//新建一个字节列表用于接收信息
byte [] msg = new byte[2048];
try {
//初始化客户端B的Socket对象
Socket b = new Socket("127.0.0.1" , 58888);
System.out.println("B连接"+b.getLocalPort());
//创建输入流用于接收信息
InputStream insB = b.getInputStream();
//将接收的信息存入列表中
insB.read(msg);
//将列表中的信息转换为字符串
int len = msg.length;
String newMsg = new String(msg , 0 , len);
System.out.println(newMsg);
}catch (Exception e){
e.printStackTrace();
}
}
}
3、运行
运行时先启动客户端A,并输入需要发送的内容,再启动客户端B
A:
B:
客户端A控制台中输入信息并回车
文章来源地址https://www.uudwc.com/A/dbxwg/
客户端B接收消息
文章来源:https://www.uudwc.com/A/dbxwg/