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的封装还是比较到位的。
相关文章
|
17天前
|
存储 Java 数据库连接
java多线程之线程通信
java多线程之线程通信
|
1月前
|
数据处理 C# C++
如何使用C#和C++结构体实现Socket通信
如何使用C#和C++结构体实现Socket通信
|
1月前
|
Java 程序员
Java 异常处理与正则表达式详解,实例演练及最佳实践
在 Java 代码执行期间,可能会发生各种错误,包括程序员编码错误、用户输入错误以及其他不可预料的状况。 当错误发生时,Java 通常会停止并生成错误消息,这个过程称为抛出异常。 try...catch 语句 try 语句允许您定义一段代码块,并在其中测试是否发生错误。 catch 语句允许您定义一段代码块,当 try 块中发生错误时执行该代码块。 try 和 catch 关键字成对使用,语法如下:
43 0
|
1月前
|
存储 Java
Java 编程实例:相加数字、计算单词数、字符串反转、元素求和、矩形面积及奇偶判断
Java中相加两个数字可通过简单赋值实现,如`int sum = x + y;`。若要用户输入数字相加,可使用`Scanner`类读取。计算单词数,可使用`split()`方法或`StringTokenizer`类。反转字符串,可用`for`循环或`StringBuilder`的`reverse()`方法。计算数组元素总和,可遍历数组累加。矩形面积通过长度乘以宽度得出。判断奇偶性,利用模2运算或位运算检查最低位。更多内容,可关注微信公众号`Let us Coding`。
49 0
|
1月前
|
Java
java面向对象高级分层实例_实体类
java面向对象高级分层实例_实体类
10 1
|
2天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
6天前
|
Java API Apache
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
【4月更文挑战第11天】ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
24 11
|
14天前
|
Java Shell
Java 21颠覆传统:未命名类与实例Main方法的编码变革
Java 21颠覆传统:未命名类与实例Main方法的编码变革
13 0
|
24天前
|
网络协议 Unix Linux
Socket通信详细介绍1
Socket通信详细介绍
30 0
|
1月前
|
Java
java面向对象高级分层实例_测试类(main方法所在的类)
java面向对象高级分层实例_测试类(main方法所在的类)
10 1