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)。

请添加图片描述

相关内容

热门资讯

安卓系统官方设计文档,Andr... 亲爱的读者们,你是否曾在某个午后,坐在窗边,手捧一杯香浓的咖啡,翻阅着那些关于安卓系统的神秘文档?今...
安卓系统文件存取总结,Andr... 手机里的文件存取,这可是个让人又爱又恨的小麻烦。你有没有想过,那些藏在安卓系统深处的文件,其实就像是...
金庸x安卓版系统,跨界融合的奇... 你知道吗?最近我在手机上发现了一个超级酷的东西,那就是金庸先生的经典作品在安卓版系统上有了全新的呈现...
6.0安卓系统的手机,功能升级... 你知道吗?最近手机界可是炸开了锅,因为6.0安卓系统要来啦!这可不是什么小打小闹的升级,而是一次颠覆...
安卓系统哪个好coloros,... 你有没有想过,手机里的安卓系统就像是个大厨,不同的“菜谱”做出来的味道可大不一样呢!今天,咱们就来聊...
安卓系统优化重要吗,安卓系统优... 你有没有发现,你的安卓手机最近有点儿“懒洋洋”的?打开应用慢吞吞的,屏幕滑动卡卡的,是不是觉得它有点...
安卓系统维护中,挑战与优化策略... 亲爱的手机控们,你们有没有想过,你的安卓手机就像一辆精心打造的赛车,而系统维护就是那不断升级的引擎,...
安卓手机华为mate50pro... 你有没有听说啊?最近安卓手机界可是掀起了一股热潮,华为Mate 50 Pro这款手机简直成了焦点!我...
哪个安卓手机系统稳定,安卓手机... 你有没有想过,为什么你的安卓手机有时候会突然卡顿,有时候又像打了鸡血一样快?这背后,其实就是手机系统...
扫码系统推荐安卓系统吗,安卓系... 你有没有想过,在这个快节奏的时代,连购物都能变得如此轻松?没错,就是扫码系统!今天,我要给你安利几款...
安卓系统代码在哪输入,安卓系统... 你有没有想过,你的安卓手机里那些神秘的代码,其实就像是一把钥匙,能解锁手机里的秘密世界呢?没错,就是...
怎么卸载安卓8.0系统,轻松清... 手机里的应用越来越多,是不是感觉内存不够用了?别急,今天就来教你怎么轻松卸载安卓8.0系统中的应用,...
国产机刷安卓系统,畅享智能生活 你有没有想过,你的国产手机其实也可以拥有安卓系统的风采呢?没错,就是那种原汁原味的安卓体验,让你在使...
系统还原安卓,全面解析备份、恢... 手机卡顿了?别急,我来教你一招,让你的安卓手机瞬间恢复活力! 系统还原,安卓手机的“回春术”想象你的...
平板安卓系统能换成window... 亲爱的读者们,你是否曾有过这样的疑问:平板安卓系统能换成windows系统吗?这可是个让人好奇的问题...
中文版安卓系统,中文版安卓系统... 亲爱的读者们,你是否曾想过,如果安卓系统也能用中文版呢?想象那些熟悉的图标、应用和设置,全部换成我们...
鸿蒙系统比安卓系统卡吗,卡顿对... 最近手机圈可是热闹非凡呢!华为的鸿蒙系统横空出世,不少小伙伴都在问:这鸿蒙系统,它比安卓系统卡吗?咱...
安卓10系统好多软件,软件生态... 你有没有发现,自从你的手机升级到了安卓10系统,好像整个世界都变得不一样了呢?各种新奇的应用软件层出...
安卓系统的残留垃圾,安卓系统残... 亲爱的手机,你最近是不是感觉有点儿“胖”了呢?别担心,今天就来给你做个“瘦身”大计,让你的安卓系统焕...
魔塔21层安卓系统,探索未知深... 亲爱的玩家们,你是否曾在深夜里,手握手机,挑战着那座传说中的魔塔?今天,就让我带你一探究竟,揭开魔塔...