JAVA Socket实现实时接收TCP消息,让你的服务端通信更高效!

这篇具有很好参考价值的文章主要介绍了JAVA Socket实现实时接收TCP消息,让你的服务端通信更高效!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文主要介绍如何利用socket实现实时接收服务端发送的TCP消息。

JAVA Socket实现实时接收TCP消息,让你的服务端通信更高效!

目录

一、需要掌握

二、程序源码

三、运行演示

一、需要掌握

网络调试助手下载:https://www.aliyundrive.com/s/6Y8L7Wv5sT6

网络通信协议的理解:JAVA socket是基于TCP/IP协议实现的,需要对TCP/IP协议有一定的了解,包括TCP连接的建立、数据传输、断开连接等方面。

1、多线程编程的实现:为了能够实时接收服务端发送的TCP消息,需要在客户端程序中使用多线程编程模式,将数据接收和数据处理分别放在不同的线程中处理。

2、数据格式的解析:客户端需要能够正确地解析服务端发送的TCP消息,包括消息的格式、编码方式等,同时还需要考虑错误处理和异常情况的处理。

3、数据的缓存和处理:由于网络通信的不确定性,客户端需要实现数据的缓存和处理,确保数据的完整性和准确性,并且能够快速响应服务端发送的消息。

4、安全性的考虑:在实时接收服务端发送的TCP消息的过程中,需要考虑数据的安全性,包括数据的加密、防止数据被篡改等方面的问题。

二、程序源码

package com.vblog.web.controller.system;
import java.io.*;
import java.net.*;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
/**
 * @author Roc-xb
 */
public class TcpClient {
	/**
     * 主函数
     */
	public static void main(String[] args) {
		while (true) {
			try {
				InputStream is;
				// 创建Socket对象,连接到指定的IP地址 和端口号
				Socket socket = new Socket("127.0.0.1", 9001);
				if (socket.isConnected()) {
					System.out.println("socket连接成功:" + socket);
				}
				// 定义缓冲区
				byte[] buff = new byte[1024];
				// 设置读取数据的超时时间为10秒
				socket.setSoTimeout(10000);
				// 获取输入流
				is = socket.getInputStream();
				while (true) {
					try {
						// 读取数据
						int readlen = 0;
						if (is != null) {
							readlen = is.read(buff);
						}
						// 将读取到的数据复制到一个新的数组中
						byte[] data = Arrays.copyOfRange(buff, 0, readlen);
						// 解析数据
						resolveData(data);
					}
					catch (SocketTimeoutException e1) {
						System.out.println("等待TCP Server响应数据...");
					}
					catch (Exception e2) {
						System.out.println("TCP Server已断开连接...");
						break;// 作用:避免TCP服务器断开的时候,进入死循环
					}
				}
			}
			catch (ConnectException e4) {
				System.out.println("TCP Server处于离线状态...");
			}
			catch (Exception e5) {
				System.out.println("其它异常信息:" + e5.getMessage());
			}
		}
	}
	public static String convertGBKToUTF8(String strGBK) {
		Charset gbkCharset = Charset.forName("GBK");
		Charset utf8Charset = Charset.forName("UTF-8");
		byte[] gbkBytes = strGBK.getBytes(gbkCharset);
		byte[] utf8Bytes = new String(gbkBytes, utf8Charset).getBytes(utf8Charset);
		return new String(utf8Bytes, utf8Charset);
	}
	/**
     * 解析数据
     *
     * @param data 待解析的数据
     */
	private static void resolveData(byte[] data) {
		// 将字节数组转换为字符串
		String message = new String(data);
		// 对接收到的数据进行解析处理
		System.out.println("服务器发送过来的数据包: " + message);
	}
}

三、运行演示

JAVA Socket实现实时接收TCP消息,让你的服务端通信更高效!

 以上代码已经实现了TCP客户端实时获取TCP服务端消息发送的消息,并且可以感知TCP服务器在线/离线状态。文章来源地址https://www.toymoban.com/news/detail-504298.html

到了这里,关于JAVA Socket实现实时接收TCP消息,让你的服务端通信更高效!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JAVA课设】-- Socket实现实时通信

    最近学期末了,Java要求做一个课程设计,需要用Java网络编程、JDBC、SWT进行设计。研究了 很久之后终于在各路大佬的指引下成功完工。 根据在计网学习的知识,通信大致分为两种,用Socket,ServerSocket类实现的TCP服务,和用DatagramSocket类实现的UDP通信服务。 详细代码使用可以参

    2023年04月08日
    浏览(22)
  • 微信小程序添加全局 socket 并接收消息通知

    最近小程序中有使用到socket,来建立长连接,实现消息通知。总结一下实现思路。 首先,在app.js中初始化socket,并处理消息,添加心跳检测。 然后再接收到消息时添加回调方法: 然后再需要进行通知处理的页面添加如下代码: 最后,小程序的socket通知处理就完成了,欢迎各

    2024年02月16日
    浏览(34)
  • C/C++ Socket UDP 广播消息的发送与接收

    局域网内全网段广播消息的IP地址为:255.255.255.255,向该IP地址发送广播消息,局域网下的任何网段的客户机都能收到广播。 对于发送端,如果你只想给某个特定的网段发送消息,例如你的IP地址为192.168.31.107,那么你的广播地址是192.168.31.255,向该广播地址发送广播消息,只

    2024年02月12日
    浏览(29)
  • java socket Server TCP服务端向指定客户端发送消息;可查看、断开指定连接的客户端;以及设置客户端最大可连接数量。

    首先需要知道java里如何创建一个Socket服务器端。 提示:注意server.accept()方法调用会阻塞,只有新的客户端连接后才返回一个新的socket对象。如果一直未连接那么会一直处于阻塞状态 了解了如何创建一个socket服务器端后。那么如何实现给指定的连接客户端发送消息呢?首先我

    2024年02月11日
    浏览(39)
  • java操作rabbitmq实现简单的消息发送(socket编程的升级)

    准备: 1.下载rabbitmq并搭建环境(和python那篇一样:http://www.cnblogs.com/g177w/p/8176797.html) 2.下载支持的jar包(http://repo1.maven.org/maven2/com/rabbitmq/amqp-client) 生产者方(Productor.java): View Code 消费者方(Consummer.java):

    2023年04月08日
    浏览(31)
  • Java使用websocket实现消息实时通知

    博客仅做学习记录使用。 做项目中遇到这样一个实时通知需求,因为第一次接触这个,期间查了很多资料,看了很多博客,最后实现功能,查询的博客太多,就不一一放出来了,感谢各位大佬。 websocket方式主要代码来源于这个大佬的博客: https://blog.csdn.net/moshowgame/article/d

    2024年02月08日
    浏览(44)
  • RabbitMQ系列(5)--使用Java实现RabbitMQ的消费者接收消息

    前言:先简单了解RabbitMQ的工作过程,方便后续开发理清思路 简略: 详细: 1、新建消费者类 效果图: 2、编写消费者消费消息的代码 例: 3、查看代码运行结果 运行代码后如果有输出生产者发送的”Hello World”信息,则证明消费者消费消息成功 4、在web页面上查看队列的消

    2024年02月06日
    浏览(30)
  • 使用Java服务器实现UDP消息的发送和接收(多线程)

    在本篇博客中,我们将介绍如何使用Java服务器来实现UDP消息的发送和接收,并通过多线程的方式来处理并发请求。UDP(User Datagram Protocol)是一种无连接、不可靠的传输协议,适合于实时性要求高的应用场景,如实时游戏、语音通信等。 步骤: 首先,我们需要导入Java提供的

    2024年02月12日
    浏览(28)
  • java后端使用websocket实现与客户端之间接收及发送消息

    客户端请求websocket接口,连接通道=》我这边业务成功客户端发消息=》客户端自动刷新。 接口:ws://localhost:8080/websocket/xx 经测试,成功 如果是线上服务器连接,则需要在nginx里配置websocket相关内容,再重启nginx,代码如下 本地连接的时候用的是ws://,因为是http链接,但是如果是

    2024年02月16日
    浏览(29)
  • Java实现socket通信详解(UDP/TCP)c/s模式

    在实现具体代码前,我们先来简单了解下TCP/UDP协议 TCP在OSI模型中位于传输层在网络层之上,故在端到端传输的基础上将数据以端口号等标识实现进程/终端设备应用的区分, 将数据精准的传达。 TCP全称为传输控制协议具有以下特点: 面向有连接的服务可靠的数据传输,即在

    2023年04月08日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包