下面我会针对“Java Socket实现单线程通信的方法示例”的攻略进行详细解答。
下面我会针对“Java Socket实现单线程通信的方法示例”的攻略进行详细解答。
1. 什么是Java Socket
Java Socket是一种用于网络编程的API,它提供了简单、高效的网络通信方式,允许程序通过网络连接来进行数据传输。
2. Java Socket实现单线程通信的方法
2.1 创建服务器
下面是一个简单的Java Socket服务器实现:
import java.net.*;
import java.io.*;
public class Server {
private ServerSocket serverSocket;
public Server(int port) throws IOException {
serverSocket = new ServerSocket(port);
}
public void run() {
while(true) {
try {
Socket socket = serverSocket.accept();
DataInputStream in = new DataInputStream(socket.getInputStream());
System.out.println(in.readUTF());
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.writeUTF("Thx for ur connection!");
socket.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws IOException {
Server server = new Server(8888);
server.run();
}
}
以上代码中,首先创建了一个ServerSocket
对象用于监听来自客户端的连接请求。当有客户端连接时,服务器会获取对应的输入流和输出流,然后进行通信。数据传输使用DataInputStream
和DataOutputStream
进行,这两个类经过封装可以很方便地进行数据读写操作。
2.2 创建客户端
下面是一个简单的Java Socket客户端:
import java.net.*;
import java.io.*;
public class Client {
private Socket socket;
public Client(String ip, int port) throws IOException {
socket = new Socket(ip, port);
}
public void run() {
try {
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.writeUTF("Hello from " + socket.getLocalSocketAddress());
DataInputStream in = new DataInputStream(socket.getInputStream());
System.out.println(in.readUTF());
socket.close();
} catch(IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
Client client = new Client("localhost", 8888);
client.run();
}
}
以上代码中,首先创建了一个Socket
对象用于连接指定的服务器。连接成功后,客户端会获取对应的输入流和输出流,然后进行通信。数据传输也是使用DataInputStream
和DataOutputStream
进行,这两个类经过封装可以很方便地进行数据读写操作。
3. 程序的运行流程
- 先运行服务器程序,它会监听8888端口来接收来自客户端的请求。
- 运行客户端程序,它会向服务器8888端口发送一条消息。
- 服务器接收到客户端发送的消息后,会在控制台上输出消息内容,并向客户端发送一条回复消息。
- 客户端接收到服务器发送的回复消息后,在控制台上输出消息内容。
- 连接结束后,服务器和客户端都会关闭连接。
沃梦达教程
本文标题为:Java Socket实现单线程通信的方法示例
基础教程推荐
猜你喜欢
- 基于jsp实现新闻管理系统 附完整源码 2023-08-02
- Mybatis入门指南之实现对数据库增删改查 2023-06-30
- Java中的==使用方法详解 2023-05-19
- 聊聊单线程的Redis为何会快到飞起 2022-10-30
- java – AliasToBeanResultTransformer和Hibernate SQLQuery 2023-11-05
- java实现web实时消息推送的七种方案 2023-03-15
- SpringBoot使用MyBatis-Plus解决Invalid bound statement异常 2023-06-02
- 详解Java方法method的定义与调用及重载 2024-03-06
- JavaServlet的文件上传和下载实现方法 2023-07-30
- 浅谈Mysql大数据分页查询解决方案 2023-12-16