Java网络编程

一、网络:将不同区域的计算机连接到一起 局域网 城域网 互联网

二、地址:IP地址 确定网络上 一个绝对地址|位置—->房子的地址

三、端口号:区分计算机软件的 —>房子的房门 两个字节 0-65535 共65535个

作用于传输层,用于标识网络传输的数据传输层交由应用层的哪一个应用

1、在同一个协议下 端口号不能重复 不同协议下可以充分

2、1024以下的不要使用 80—->http 21——>ftp

四、资源定位:URL 统一资源定位符 URI:统一资源

五、数据的传输

1、协议:TCP和UDP协议

  • TCP面向连接,保证传输可靠性,但是实现较为繁琐
  • UDP面向数据,不保证数据可靠性,但实现简单,传输速率较高

2、传输
1)先封装

​ 2)先拆封

六、简单使用方法

1.UDP方式

客户端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package top.dlkkill.udp;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;


public class MyClient {

public static void main(String[] args) throws IOException {
//创建服务端
DatagramSocket server=new DatagramSocket(6666);//指定端口号6666
BufferedReader console=new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入要发送数据");
String msg=console.readLine();
byte[] data=msg.getBytes();
//数据封装成包
DatagramPacket pack=new DatagramPacket(data, data.length, new InetSocketAddress("localhost",8888) );
//发送数据
server.send(pack);
}

}

服务端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package top.dlkkill.udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class MyServer {

public static void main(String[] args) throws IOException {
//创建服务端
DatagramSocket server=new DatagramSocket(8888);//指定端口号8888
//准备接收容器
byte[] container=new byte[10240];
//封装成包
DatagramPacket pack=new DatagramPacket(container, container.length);
//接收数据,阻塞式的接收
server.receive(pack);
//分析数据
byte[] data=pack.getData();
int dataLength=pack.getLength();
String Data=new String(data);
System.out.println("接收到的数据为:");
System.out.println(Data);
System.out.println("数据长度"+dataLength);
}

}

2.TCP方式

详细见下文,利用TCP实现一个最简单的具有收发功能的网络聊天室

https://dlkkill.top/Java%E5%88%A9%E7%94%A8TCP%E7%BC%96%E7%A8%8B%E5%AE%9E%E7%8E%B0%E7%AE%80%E5%8D%95%E8%81%8A%E5%A4%A9%E5%AE%A4/