java基础 | 网络编程

InetAddress 和 InetsocketAddress

InetAddress:封装IP及DNS

方法:
getHostAddress() 返回ip地址
getHostName() 返回于域名 | 本机为计算机名
InetAddress.getLocalHost()
InetAddress.getByName(” [ ip_Address|域名 ] “)

InetsocketAddress:InetAddress基础上封装端口

URL

URI(Uniform resource identifer)统一资源标识符,用来唯一的标识一个资源

URL(Uniform resource Locator)统一资源定位符,他是一个具体的URI

四部分组成:协议、存放资源的主机域名、端口、资源文件名(/ 相对主机的路径)

创建
URL(String spec) 绝对路径构建
URL(URL context, String res) 相对路径构建
获取资源
openStream()

BufferedReader() 转换编码

UDP

java.lang.Object
|—— java.net.DatagramSocket

类 DatagramSocket DatagramPacket

1、客户端

  1. 创建客户端 DatagramSocket
  2. 准备数据 字节数组
  3. 打包 DatagramPacket + 服务器地址及端口
  4. 发送
  5. 释放资源

2、服务端

  1. 创建服务端 DatagramSocket类+指定端口
  2. 创建接受容器 字节数组 封装 DatagramPacket包 接收数据
  3. 分析
  4. 释放资源

示例
服务端

public static void main(String[] args) throws IOException {
        //创建服务器 端口
        DatagramSocket server = new DatagramSocket(8888);
        //准备接收容器
        byte[] container = new byte[1024];
        //封装成包
        DatagramPacket packet = new DatagramPacket(container, container.length);
        //接收数据
        server.receive(packet);
        //分析数据
        byte[] data = packet.getData();
        int len = packet.getLength();
        System.out.println(new String(data, 0, len));
        server.close();
    }

客户端

public static void main(String[] args) throws IOException {
        DatagramSocket client = new DatagramSocket(6666);

        String msg="udp coding";
        byte[]  data = msg.getBytes();
        DatagramPacket packet = new DatagramPacket(data, data.length, new InetSocketAddress("localhost",8888));

        client.send(packet);
        client.close();
    }

TCP

java.lang.Object
|——java.net.Socket

和Datagramdsocket并没有继承关系

1、面向连接

请求——响应
Request——Response

2、Socket编程

服务器和客户端之间的双向管道就叫Socket,
一个连接对应一个Socket,站在服务器还是客户端都是对应这一条Socket
不同连接建立不同的Socket

1、 服务端 ServerSocket

先启动服务器再连接

创建服务器 指定端口 ServerSocket(int port) <1024以下留给系统使用>
接受客户端的连接 阻塞式 accept()
发送数据 接收数据

new BufferedWriter(new OutputStreamReader(< Socket>.getOutputStream(……)))

2、客户端 Socket

创建客户端 必须指定服务端+端口 自己的端口是系统自动分配的 Socket
接受数据 getInputStream
多个客户端_聊天室原理

为每一个连接建立一个线程

聊天室:中转站

客户端可以发送数据 接受数据
服务端为每一个客户端创建一个线程
……

猜你喜欢

转载自blog.csdn.net/jh_zhai/article/details/80250232