1、基本概念
网络:将不同区域的计算机连接到一起。
地址:IP地址,确定网络上一个绝对位置。
端口号:主机区分不同的服务。
A:同一个协议下,端口号不能重复;不同协议下,端口号可以重复。
B:1024以下的端口号不要使用,预留给致命厂商(80->http;21->ftp)
资源定位:
A:URL(统一资源定位符)
协议+主机名(IP|域名)+端口+资源文件名
B:URI(统一资源)
数据传输协议
A:TCP(Transmission Control Protocol 传输控制协议)
电话,类似三次握手,面向连接,安全可靠,效率较低。
B:UDP(User Datagram Protocol 用户数据报协议)
短信,非面向连接,效率高。
2、UDP
A:服务端
public static void main(String[] args) throws IOException {
//1、创建服务端+端口
DatagramSocket server = new DatagramSocket(8889);
//2、准备容器
byte[] bs = new byte[1024];
//3、封装成包
DatagramPacket packet = new DatagramPacket(bs, bs.length);
//4、接收数据
server.receive(packet);
//5、分析数据
byte[] data = packet.getData();
int len = packet.getLength();
String s = new String(data,0,len);
System.out.println(s);
server.close();
}
B:客户端
public static void main(String[] args) throws IOException {
//1、创建客户端
DatagramSocket client = new DatagramSocket(8888);
//2、准备数据
String s = "你好!";
byte[] data = s.getBytes();
//3、封装数据
DatagramPacket packet = new DatagramPacket(data, data.length, new InetSocketAddress("localhost", 8889));
//4、发送数据
client.send(packet);
//5、释放资源
client.close();
}
3、TCP
要先开启服务端,再开启客户端
A:服务端
public static void main(String[] args) throws IOException {
//1、创建服务端
ServerSocket server = new ServerSocket(8888);
//2、接受客户连接
Socket socket = server.accept();
//3、接受/发送数据
String ims = "你好!";
//输出流
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF(ims);
dos.flush();
}
B: 客户端
public static void main(String[] args) throws UnknownHostException, IOException {
//1、创建客户端
Socket client = new Socket("localhost", 8888);
//2、接受数据
DataInputStream dis = new DataInputStream(client.getInputStream());
String ims = dis.readUTF();
dis.close();
System.out.println(ims);
}