Java入门TCP客户端和服务器应用步伐 2024.7.27 22:14

打印 上一主题 下一主题

主题 511|帖子 511|积分 1533

下面是一个完整的示例,展示怎样使用 Java 的 Socket 和 ServerSocket 类编写一个简单的 TCP 客户端和服务器应用步伐,以及一个简单的聊天应用步伐。代码包括客户端和服务器的实现,可以或许通过 TCP 毗连举行消息互换。

1. TCP 服务器步伐

首先,我们将创建一个简单的 TCP 服务器,它监听特定端口并可以或许接收来自客户端的消息。
Server.java
  1. package gpt;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.PrintWriter;
  6. import java.net.ServerSocket;
  7. import java.net.Socket;
  8. public class Server {
  9.     private static final int port = 12345;//设置监听端口
  10.     public static void main(String[] args) {
  11.         System.out.println("服务器启动,等待客户端连接...");
  12.         try(ServerSocket serverSocket = new ServerSocket(port)) {
  13.          while (true)
  14.          {
  15.              Socket clientSocket = serverSocket.accept();
  16.              System.out.println("客户端已连接:" + clientSocket.getInetAddress());
  17.              //创建一个新的线程处理客户端请求
  18.              new ClientHandler(clientSocket).start();
  19.          }
  20.         } catch (Exception e) {
  21.             System.err.println("服务器异常: " + e.getMessage());
  22.         }
  23.     }
  24. }
  25. class ClientHandler extends Thread{
  26.     private Socket clientSocket;
  27.     public ClientHandler(Socket clientSocket) {
  28.         this.clientSocket = clientSocket;
  29.     }
  30.     @Override
  31.     public void run() {
  32.         try(BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
  33.             PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true)) {
  34.             String inputlines;
  35.             while((inputlines = in.readLine())!=null)
  36.             {
  37.                 System.out.println("收到消息:" + inputlines);
  38.                 out.println(inputlines.toUpperCase());//发送响应
  39.             }
  40.         } catch (Exception e) {
  41.             System.out.println("客户端处理异常" + e.getMessage());
  42.         }
  43.         finally {
  44.             try {
  45.                 clientSocket.close();
  46.             } catch (IOException e) {
  47.                 System.out.println("关闭异常连接" + e.getMessage());
  48.             }
  49.         }
  50.     }
  51. }
复制代码
2. TCP 客户端步伐

然后,我们将创建一个简单的 TCP 客户端,它毗连到服务器并可以或许发送消息。
Client.java
  1. package gpt;
  2. import java.io.*;
  3. import java.net.Socket;
  4. import java.util.Scanner;
  5. public class Client {
  6.     private static final String SERVER_ADDRESS = "localhost"; //服务器地址
  7.     private static final int SERVER_PORT = 12345; //服务器端口
  8.     public static void main(String[] args) {
  9.         try (Socket socket = new Socket(SERVER_ADDRESS, SERVER_PORT);
  10.              PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
  11.              BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  12.              Scanner sc = new Scanner(System.in)) {
  13.             System.out.println("已连接到服务器,你可以开始聊天");
  14.             //新线程用于接收服务器消息
  15.             new Thread(() -> {
  16.                     try {
  17.                         String severMessage;
  18.                          while((severMessage = in.readLine())!=null)
  19.                          {
  20.                              System.out.println("服务器:" + severMessage);
  21.                          }
  22.                     } catch (Exception e) {
  23.                         System.out.println("接收消息时出错" + e.getMessage());
  24.                     }
  25.                 }
  26.             ).start();
  27.             //主线程用于发送信息
  28.             String userInput;
  29.             while(true)
  30.             {
  31.                 userInput = sc.nextLine();
  32.                 if(userInput.equalsIgnoreCase("exit"))
  33.                 {
  34.                     break;
  35.                 }
  36.                 out.println(userInput);//发送信息
  37.             }
  38.         }
  39.         catch (Exception e)
  40.         {
  41.             System.err.println("连接服务器时出现异常: " + e.getMessage());
  42.         }
  43.     }
  44. }
复制代码
3. 使用示例



  • 1.编译代码:
    使用 javac 编译 Server.java 和 Client.java 文件。
  • 2.运行服务器:首先启动服务器:java Server
  • 3.你应该会看到输出“服务器启动,等候客户端毗连…”。
  • 4.运行客户端:java Client
    你可以输入恣意消息,然后按回车键发送到服务器。服务器将以大写情势复兴。
  • 5.结束会话:
    在客户端输入 exit 以关闭客户端步伐。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张国伟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表