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

请添加图片描述

相关内容

热门资讯

海外安卓系统流畅度,揭秘各大品... 你有没有发现,现在手机的世界里,安卓系统可是越来越受欢迎了呢?尤其是那些喜欢追求流畅体验的小伙伴,简...
xp系统安卓不上,探索跨时代技... 你是不是也遇到了这样的烦恼?你的电脑上安装了XP系统,但是安卓设备却无法正常连接。别急,今天就来给你...
华为安卓8.0系统蓝牙,华为安... 你知道吗?最近华为出了一款新手机,搭载的是安卓8.0系统,而且蓝牙功能超级强大!今天,我就来给你详细...
鸿蒙系统怎样恢复安卓,轻松恢复... 你有没有遇到过手机系统崩溃的尴尬时刻?尤其是当你正沉浸在鸿蒙系统的美妙体验中,突然发现它“罢工”了,...
安卓系统能换ios系统文件,系... 你知道吗?现在科技的发展真是让人眼花缭乱,连手机系统都能来个“大变身”呢!没错,就是那个我们熟悉的安...
安卓系统发热会卡吗,安卓手机发... 手机发热卡顿,是不是让你头疼不已?尤其是安卓系统,有时候一发热就感觉像是慢吞吞的老牛,让人抓狂。今天...
安卓window双系统用处,多... 你有没有想过,为什么有些人手机里既有安卓系统,又有Windows系统呢?这可不是简单的爱好,而是有着...
安卓系统清理底层垃圾,底层垃圾... 手机用久了是不是感觉越来越慢了?别急,今天就来给你支个招,让你的安卓手机焕然一新,速度飞快!那就是—...
易语言开发安卓系统,创新编程语... 你有没有想过,用我们熟悉的中文编程语言来开发安卓系统呢?这听起来是不是有点不可思议?但你知道吗,易语...
合并安卓系统分区,安卓系统分区... 你有没有想过,你的安卓手机里那些神秘的系统分区,其实是可以被你巧妙地合并的?没错,就是那个让不少手机...
安卓手机升级系统更新,探索新功... 亲爱的手机控们,你们有没有发现,最近你的安卓手机好像变得有些不一样了呢?是不是觉得它变得更加流畅,功...
安卓系统基于什么底层,基于Li... 你有没有想过,安卓系统这个我们每天不离手的家伙,它到底是怎么运作的呢?它背后的秘密,是不是就像一部复...
安卓系统8.0如何更新,轻松实... 亲爱的安卓用户们,你是否也像我一样,对安卓系统8.0的新鲜功能充满期待呢?想要让你的手机焕然一新,体...
安卓手机拦截系统下载,下载安全... 你有没有遇到过这种情况:手机里突然弹出了各种广告,或者收到了一些奇怪的短信,让你不禁怀疑自己的手机是...
安卓调用系统相机代码,Andr... 你有没有想过,手机里的相机功能竟然可以这么神奇地被我们调用?没错,就是那个安卓系统里的相机,它不仅能...
安卓系统威图手机,安卓系统下的... 你知道吗?在手机市场上,有一款特别引人注目的手机,那就是安卓系统下的威图手机。它不仅外观时尚,功能强...
把电脑装上安卓系统,安卓系统在... 你有没有想过,把你的电脑装上安卓系统,让它瞬间变身成一部超级手机?想象你可以在电脑上玩手游、刷抖音,...
安卓系统更新特别慢,探究原因与... 你有没有发现,安卓系统的更新速度简直让人抓狂?每次看到手机屏幕上那个小小的更新提示,心里就一阵烦躁。...
安卓10的系统文件,深度解析与... 你知道吗?最近安卓系统又升级啦!安卓10的系统文件可是大有来头,今天就来给你好好扒一扒这个神秘的家伙...
维修安装系统安卓版,便捷高效的... 你有没有遇到过手机或者电脑出了点小状况,心里那个急啊,但又不知道怎么办?别担心,今天就来给你安利一个...