Java Socket通信

简介: 1 . 服务器端public class Server { public static void main(String[] args) { try { // 1.

1 . 服务器端


public class Server {
    public static void main(String[] args) {
        
        try {
            // 1. 绑定端口,并监听此端口
            ServerSocket serverSocket = new ServerSocket(6000);
            System.out.println("服务器启动成功...");
            
            // 2. 调用accept()方法开始监听,等待客户端的链接
            // 使accept()阻塞等待客户端请求,有客户请求到来则产生一个Socket对象,并继续执行
            Socket socket = serverSocket.accept();
            
            // 3. 获取输入流,并调取客户端信息            
            // 由socket对象得到输入流,并构造相应的BufferedReader对象
            String line;
            InputStream inputStream = socket.getInputStream();
            BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
            
            // 4. 由socket对象得到输出流,并构造PrintWriter对象
            PrintWriter writer = new PrintWriter(socket.getOutputStream());
            
            // 5. 由系统的标准输入设备构造BufferedReader对象
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            
            // 6. 从标准输入打印从客户端度读入的字符串
            line = br.readLine();
            
            while(!line.endsWith("end")){
                writer.println(line);
                writer.flush();
                System.out.println("Server: " + line);
                System.out.println("Client: " + in.readLine());
                line = br.readLine();
            }
            
            // 7. 释放
            writer.close();
            in.close();
            socket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("服务器启动失败...");
        }
    }
}

  1. 客户端

public class Client {
    public static void main(String[] args) {
        try {
            // 1. 创建客户端Socket,指定服务器地址和端口
            Socket socket = new Socket("127.0.0.1", 6000);
            System.out.println("客户端启动成功...");
            // 2. 获取输出流, 向服务器发送消息
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            PrintWriter writer = new PrintWriter(socket.getOutputStream());
            // 3. 获取输入流,并读取服务器端的响应信息
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String readLine;
            readLine = br.readLine();
            while(!readLine.equals("end")){
                writer.println(readLine);
                writer.flush();
                System.out.println("Client: " + readLine);
                System.out.println("Server: " + in.readLine());
                readLine = br.readLine();
            }
            
            // 4. 释放资源
            writer.close();
            in.close();
            socket.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
            System.out.println("未知主机");
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("客户端启动失败");
        }
        
    }
}

  1. 运行时首先开启服务器端,再打开客户端。在客户端控制台中输入消息,接下来在服务器端控制台数输入消息,可以看到客户端发送的消息。
目录
相关文章
|
17天前
|
存储 Java 数据库连接
java多线程之线程通信
java多线程之线程通信
|
1月前
|
数据处理 C# C++
如何使用C#和C++结构体实现Socket通信
如何使用C#和C++结构体实现Socket通信
|
3月前
|
网络协议 程序员 Python
揭秘Python网络编程:深入理解Socket通信
在当今信息时代,网络通信已经成为人们生活中不可或缺的一部分。而Python作为一种高效、易用的编程语言,自然也能够很好地支持网络编程和Socket通信。本文将介绍Python网络编程与Socket通信的相关知识,包括Socket通信模型、Socket编程接口、网络套接字等内容。
|
3月前
|
网络协议 开发者 Python
Python网络编程与Socket通信:连接世界的无限可能
在当今数字化时代,Python作为一种强大的编程语言,通过网络编程与Socket通信为我们打开了连接世界的无限可能。本文将深入探讨Python网络编程的基础知识、Socket通信的原理以及实际应用,帮助读者更好地理解并运用这一技术。
|
3月前
|
网络协议
【Netty 网络通信】Socket 通信原理
【1月更文挑战第9天】【Netty 网络通信】Socket 通信原理
|
2天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
24天前
|
网络协议 Unix Linux
Socket通信详细介绍1
Socket通信详细介绍
30 0
|
2月前
|
C++
C++实现Socket连接通信
C++实现Socket连接通信
13 1
|
2月前
火山中文编程 -- 实现Socket通信
火山中文编程 -- 实现Socket通信
15 0