Java Socket服务端客户端通信实例

简介: 本文目录1. Socket是啥2. 运行机制3. 代码示例4. 测试5. 小结

1. Socket是啥

实际上是Java为TCP通信封装的模型对象。


TCP通信有服务端和客户端之分,Java语言为此提供了ServerSocket和Socket类。


2. 运行机制

服务端运行在一个机器的某个端口上,等待客户端来访问。


客户端向指定IP的机器的指定端口发起访问。


当服务端接收到客户端的访问请求时,会建立一个Socket来代表该客户端,通过该Socket进行输入输出操作。


客户端与服务端建立连接后,也会有一个Socket,用于输入输出操作。


3. 代码示例

首先建立一个服务端,在10000端口等待客户端连接。

/**
 * Hello服务端
 */
public class HelloServerSocket {
  public static void main(String[] args) throws IOException {
    // 服务端Socket
    ServerSocket serverSocket = new ServerSocket(10000);
    // 一直运行,等待客户端请求
    while (true) {
      // 每当收到客户端请求,则生成一个对应的客户端Socket
      Socket socket = serverSocket.accept();
      // 对客户端输出Hello
      PrintStream stream = new PrintStream(socket.getOutputStream());
      stream.print("Hello");
      // 关闭输出流和客户端
      stream.close();
      socket.close();
    }
  }
}
然后通过客户端发起访问请求:
/**
 * Hello客户端
 */
public class HelloClientSocket {
  public static void main(String[] args) throws UnknownHostException, IOException {
    // 指定服务端IP和端口
    Socket socket = new Socket("127.0.0.1", 10000);
    // 获取输入流,此处包装了下,通过BufferedReader读取服务端输入内容
    BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    String line = null;
    while ((line = reader.readLine()) != null) {
      System.out.println("来自服务端的问候:" + line);
    }
  }
}
4. 测试
先运行服务端,然后运行客户端,每次运行客户端控制台会打印:
来自服务端的问候:Hello
1
5. 小结
这是一个最简单的Socket通信程序了,可以发现Java的封装还是比较到位的。
相关文章
|
2月前
|
存储 Java 计算机视觉
Java二维数组的使用技巧与实例解析
本文详细介绍了Java中二维数组的使用方法
54 15
|
2月前
|
缓存 Java 开发者
Java字面量详解:概念、分类与使用实例
本文介绍了Java字面量的概念、分类及应用。
57 11
|
2月前
|
Java 物联网 定位技术
Java socket获取gps定位
通过Java Socket编程获取GPS定位信息可以实现实时的地理位置跟踪。本文介绍了如何搭建Socket服务器、解析GPS数据以及实现客户端发送GPS数据的流程。希望这篇文章能为开发者提供清晰的指导,帮助构建高效的GPS定位系统。
50 7
|
5月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
229 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
5月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
264 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
5月前
|
Java 流计算
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
68 1
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
|
5月前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
5月前
|
Java
[Java]Socket套接字(网络编程入门)
本文介绍了基于Java Socket实现的一对一和多对多聊天模式。一对一模式通过Server和Client类实现简单的消息收发;多对多模式则通过Server类维护客户端集合,并使用多线程实现实时消息广播。文章旨在帮助读者理解Socket的基本原理和应用。
50 1
|
5月前
|
Java
java的Random类和Arrays.sort类使用实例
java的Random类和Arrays.sort类使用实例
24 1
|
5月前
|
Java
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
本文介绍了Java中this和super关键字的用法,包括在构造方法中使用this来区分参数和成员变量、使用super调用父类构造方法和方法,以及它们在同一个方法中同时使用的场景。
251 0
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!

热门文章

最新文章