21xrx.com
2024-12-23 01:31:40 Monday
登录
文章检索 我的文章 写文章
学完Java Socket的体会:从基础到实践
2023-06-16 12:59:52 深夜i     --     --
Java Socket

Java Socket是Java网络编程的重要组成部分。通过学习Socket编程,开发者可以实现基于TCP和UDP协议的网络应用程序。本文将介绍Java Socket的基础知识,以及一些具体的Socket编程实践案例,帮助读者更好地理解Socket编程的相关概念和应用。

一、Java Socket基础知识

Java Socket是Java语言提供的一种封装了TCP/IP协议的网络编程API。通过该API,开发者可以轻松实现网络应用程序的开发。Socket编程的过程中,主要涉及到以下几个类:

- ServerSocket:表示服务器端的Socket,用于监听客户端的连接请求。

- Socket:表示客户端的Socket,用于连接服务器端。

- SocketAddress:表示Socket的地址,提供了IP和端口的封装。

除了以上三个类之外,还有一些其他的类,如DataInputStream、DataOutputStream、ObjectInputStream、ObjectOutputStream等,用于在Socket之间传输数据时的输入输出流处理。通过这些类的组合使用,开发者可以编写出相应的网络应用程序。

二、Socket编程实践案例

下面是一个简单的Java Socket编程实践案例。该案例实现了一个简单的服务端和客户端之间的通信。

服务端代码:


import java.net.ServerSocket;

import java.net.Socket;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

public class Server {

  public static void main(String[] args) throws Exception {

    System.out.println("服务器启动...");

    ServerSocket serverSocket = new ServerSocket(8888); // 创建ServerSocket对象,指定端口号

    Socket socket = serverSocket.accept(); // 等待客户端连接

    System.out.println("客户端已连接...");

    InputStream inputStream = socket.getInputStream(); // 获取输入流

    byte[] buffer = new byte[1024];

    int len;

    while ((len = inputStream.read(buffer)) != -1) { // 循环读取数据

      System.out.println("客户端发送的数据:" + new String(buffer, 0, len));

    }

    OutputStream outputStream = socket.getOutputStream(); // 获取输出流

    outputStream.write("Hello Client".getBytes()); // 发送数据

    serverSocket.close(); // 关闭ServerSocket

  }

}

客户端代码:


import java.net.Socket;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

public class Client {

  public static void main(String[] args) throws Exception {

    System.out.println("客户端启动...");

    Socket socket = new Socket("localhost", 8888); // 创建Socket对象,指定IP和端口号

    OutputStream outputStream = socket.getOutputStream(); // 获取输出流

    outputStream.write("Hello Server".getBytes()); // 发送数据

    InputStream inputStream = socket.getInputStream(); // 获取输入流

    byte[] buffer = new byte[1024];

    int len;

    while ((len = inputStream.read(buffer)) != -1) { // 循环读取数据

      System.out.println("服务器发送的数据:" + new String(buffer, 0, len));

    }

    socket.close(); // 关闭Socket

  }

}

三、关键词

Java Socket、TCP/IP协议、网络编程

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复