Java简单实现服务器客户端通信
创始人
2024-09-25 03:20:03
0

目录

    • Socket 概述
    • Socket 通信模型
    • Socket 编程流程
    • DEMO
      • 服务器端
      • 客户端

在Java中实现服务器和客户端的通信,可以使用Java Socket编程。

Socket 概述

Socket 指的是“插座”,是应用层与传输层之间的桥梁,用于在网络上进行双向通信。在 Socket 编程中,客户端与服务器之间的通信需要通过 Socket 进行实现。客户端通过 Socket 向服务器发送请求,服务器接收请求后返回响应,完成整个通信过程。

Socket 通信模型

Socket 通信模型分为两种:TCP 和 UDP。TCP 是一种可靠的传输协议,它保证了数据的完整性和有序性,适用于需要可靠传输的场景;UDP 是一种无连接的传输协议,它不保证数据的完整性和有序性,适用于实时通信、流媒体传输等场景。

Socket 编程流程

Socket 编程流程一般包括以下几个步骤:

创建 Socket 对象(客户端)或 ServerSocket 对象(服务器)。

绑定 Socket 地址。

启动监听进程(服务器)或连接进程(客户端)。

发送或接收数据。

关闭连接。

在这里插入图片描述

DEMO

以下是一个简单的服务器和客户端的例子,它们通过TCP/IP协议通信。

服务器端

Server.java

package socket;  import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket;  public class Server {  	public static void main(String[] args) { 		int port = 8085; 		try (ServerSocket serverSocket = new ServerSocket(port)){ 			System.out.println("服务器启动,等待客户端连接..."); 			while(true) { 				try (Socket socket = serverSocket.accept()){ 					System.out.println("客户端连接成功!"); 					BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));                     PrintWriter out = new PrintWriter(socket.getOutputStream(), true);                                          String message;                     while ((message = in.readLine()) != null) {                         System.out.println("收到客户端消息: " + message);                         out.println("服务器回应: " + message);                     } 				} catch (IOException e) { 					e.printStackTrace(); 				} 			} 		} catch (IOException e) { 			e.printStackTrace(); 		} 	}  }  

客户端

Client.java

package socket;  import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException;  public class Client {  	public static void main(String[] args) { 		String hostname = "localhost"; // 服务器地址         int port = 8085; // 服务器端口         try (Socket socket = new Socket(hostname, port)) {             PrintWriter out = new PrintWriter(socket.getOutputStream(), true);             BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));             BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));              String userInput;             while ((userInput = stdIn.readLine()) != null) {                 out.println(userInput);                 System.out.println("服务器回应: " + in.readLine());             }         } catch (UnknownHostException e) {             System.err.println("未知主机: " + hostname);             e.printStackTrace();         } catch (IOException e) {             System.err.println("I/O错误与主机通信");             e.printStackTrace();         }  	}  }  

在这个例子中,服务器端监听8085端口,等待客户端的连接。客户端连接到服务器后,可以发送消息给服务器,服务器会将收到的消息原样返回给客户端。这个简单的例子展示了基本的Socket编程,但在实际应用中,你可能需要考虑更复杂的协议(如HTTP或自定义协议)和安全性(如SSL/TLS)。

请添加图片描述

相关内容

热门资讯

秒懂普及”新长虹房卡领取码“人... 房卡领取码是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:113857776许多玩家在游戏中会购买房...
一分钟实测分享”新永和是如何购... 一分钟实测分享”新永和是如何购买的“详细房卡使用教程游戏中心打开微信,添加客服【113857776】...
秒懂百科”新上游房卡客服“金花... 秒懂百科”新上游房卡客服“金花牛牛房卡充值游戏中心打开微信,添加客服【113857776】,进入游戏...
秒懂百科”新下游房卡在哪里买“... 来教大家如何使用房卡在哪里买房卡充值 添加房卡批售商:微【113857775】复制到微信搜索、直接添...
实测分享”新道游房卡获取方式“... 房卡获取方式是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:113857776许多玩家在游戏中会购买...
一秒了解”新久情在哪里买房卡“... 来教大家如何使用在哪里买房卡房卡充值 添加房卡批售商:微【113857775】复制到微信搜索、直接添...
玩家须知”新九神房卡充值“新老... 玩家须知”新九神房卡充值“新老夫子房卡充值游戏中心打开微信,添加客服【113857776】,进入游戏...
秒懂百科”新全游房卡详细充值“... 来教大家如何使用房卡详细充值房卡充值 添加房卡批售商:微【113857775】复制到微信搜索、直接添...
1分秒分析”新详心在哪里买房卡... 1分秒分析”新详心在哪里买房卡“哪里有详细房卡介绍 微信牛牛房卡客服微信号微信游戏中心打开微信,添加...
一秒了解”炸金花低价获取分享房... 一秒了解”炸金花低价获取分享房卡给大家“人海大厅房卡充值 微信牛牛房卡客服微信号微信游戏中心打开微信...
一秒了解”新玄龙房卡详细充值“... 一秒了解”新玄龙房卡详细充值“金花房卡充值 微信牛牛房卡客服微信号微信游戏中心打开微信,添加客服【1...
1分秒分析”新烛龙如何买房卡“... 1分秒分析”新烛龙如何买房卡“哪里有详细房卡介绍微信房卡充值 添加房卡批售商:微【113857776...
玩家须知”新九天房卡哪里充“金... 房卡哪里充是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:113857776许多玩家在游戏中会购买房...
秒懂普及”新西楚房卡充值“哪里... 来教大家如何使用房卡充值房卡充值 添加房卡批售商:微【113857775】复制到微信搜索、直接添加房...
秒懂百科”新九五获得房卡链接渠... 来教大家如何使用获得房卡链接渠道房卡充值 添加房卡批售商:微【113857775】复制到微信搜索、直...
玩家须知”新九天房卡哪里充“新... 玩家须知”新九天房卡哪里充“新道游房卡充值 微信牛牛房卡客服微信号微信游戏中心打开微信,添加客服【1...
玩家须知”新荣耀是如何购买的“... 来教大家如何使用哪里有详细房卡介绍房卡充值 添加房卡批售商:微【113857775】复制到微信搜索、...
1分秒分析”新鸿运是如何购买的... 1分秒分析”新鸿运是如何购买的“王者大厅房卡充值微信房卡充值 添加房卡批售商:微【113857776...
实测分享”新鸿狐房卡在哪里买“... 实测分享”新鸿狐房卡在哪里买“低价获取房卡给大家微信房卡充值 添加房卡批售商:微【113857776...