当前位置: 首页 > wzjs >正文

免费做企业推广的网站wordpress广告链接

免费做企业推广的网站,wordpress广告链接,山西网站建设方案,电子商务网站建设与管理心得前言 大家好,由于工作上业务的需要,在java项目中引入了socket通信,特此记录一下,用以备份,本文章中的socket通信实现了,服务端与客户端的双向通讯,以及二者之间的心跳通信,服务端重启之后,客户端的自动重连功能。 原理 Socket通信是计算机网络中常用的一种通信机制…

前言

大家好,由于工作上业务的需要,在java项目中引入了socket通信,特此记录一下,用以备份,本文章中的socket通信实现了,服务端与客户端的双向通讯,以及二者之间的心跳通信,服务端重启之后,客户端的自动重连功能。

原理

Socket通信是计算机网络中常用的一种通信机制,它是基于TCP/IP协议实现的,提供了两个应用程序之间通过网络进行数据交换的能力。Socket本质上是一种抽象概念,为网络服务提供了一组API接口。

  • Socket通信模型

Socket通信模型通常包括客户端和服务器端两部分。
服务器端:负责在特定的端口监听来自客户端的连接请求,当一个请求到达时,服务器会与客户端建立连接,并为客户端提供相应的服务。
客户端:主动向服务器的特定IP地址和端口发起连接请求,连接成功后,客户端可以通过建立的连接向服务器发送请求并接收响应。

  • Socket通信过程

Socket通信过程一般包括以下几个步骤:

  • 服务器监听:

服务器通过socket()函数创建一个Socket,并通过bind()函数将其绑定到一个IP地址和端口上。然后,服务器调用listen()函数开始监听该端口上的连接请求。

  • 客户端请求连接:

客户端也通过socket()函数创建一个Socket,然后调用connect()函数尝试与服务器的指定IP地址和端口建立连接。

  • 服务器接受连接:

服务器在接收到客户端的连接请求后,通过accept()函数接受这个连接。如果成功,accept()函数会返回一个新的Socket(通常称为“子Socket”),用于与该客户端进行通信。

数据传输:连接建立成功后,客户端和服务器就可以通过新建立的Socket进行数据传输了。数据传输可以是单向的也可以是双向的。应用程序可以使用send(), write(), recv(), read()等函数进行数据发送和接收操作。

  • 断开连接:

当通信结束后,客户端和服务器都可以调用close()函数来关闭自己持有的Socket,从而断开两者之间的连接。
TCP vs UDP
在实际使用中,基于Socket的通信方式主要有两种:基于TCP和基于UDP。
TCP Socket:提供可靠、面向连接、基于字节流的通信方式。适用对数据完整性和顺序有要求的应用场景。
UDP Socket:提供无连接、不保证可靠性、基于消息(数据报)的通信方式。适用于对实时性要求高、容忍部分数据丢失或乱序的应用场景。

代码实现

服务端

服务端主体逻辑:和每个接入的客户端都会使用独立线程建立起长连接,二者之间使用心跳保持联系,使用clientSockets 存储了每个客户端的信息便于和客户端建立起联系。

package com.example.demo2.server.socket;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Map;
import java.util.concurrent.*;/*** @author kim*/
@Component
public class TcpServer implements DisposableBean {private static final Logger logger = LoggerFactory.getLogger(TcpServer.class);private final SocketServerConfig config;private ServerSocket serverSocket;private ExecutorService executorService;private volatile boolean running = true;// 存储客户端连接private final Map<String, Socket> clientSockets = new ConcurrentHashMap<>();public TcpServer(SocketServerConfig config) {this.config = config;}@PostConstructpublic void start() throws IOException {executorService = Executors.newFixedThreadPool(config.getMaxThreads());serverSocket = new ServerSocket(config.getPort());logger.info("平台socket服务已启动, 监听端口为 {}", config.getPort());new Thread(this::acceptConnections).start();}private void acceptConnections() {while (running) {try {Socket clientSocket = serverSocket.accept();String clientAddress = clientSocket.getInetAddress().getHostAddress();clientSockets.put(clientAddress, clientSocket);executorService.execute(new ClientHandler(clientSocket, clientAddress));} catch (IOException e) {if (running) {logger.error("Connection accept error", e);}}}}// 用于发送消息到特定客户端public void sendMessageToClient(String clientAddress, String message) throws IOException {Socket socket = clientSockets.get(clientAddress);if (socket != null && !socket.isClosed()) {PrintWriter out = new PrintWriter(socket.getOutputStream(), true);out.println(message);logger.info("Sent message to {}: {}",
http://www.dtcms.com/wzjs/572501.html

相关文章:

  • 东莞网站设计服务网站的风格
  • 传世网站建设赌粉在哪个平台引流
  • 网站内容页相关性怎么做电脑网页打不开是什么问题
  • wordpress站点如何适应手机莱芜益寿堂网站
  • 商城建设网站开发wordpress 替换主题图片
  • 云南省建设监理协会网站网站图片规格
  • 做图骂人的图片网站网站建设 朝阳区
  • 新乡移动网站建设logo的专业设计
  • 做网站营销公司有哪些外贸网站建设推广公司前景如何
  • 长春火车站是哪个站广州模板建站平台
  • 专门教人做点心的网站先做网站还是先收集样品
  • 农产品电商网站建设电子商务网站建设策划书例子
  • 吴桥县做网站注册网络公司起什么名字
  • 做电影网站模板教学设计美的集团网站建设方案书
  • 网站 为何要 备案江门网络建站模板
  • 东莞中赢网站建设公司怎么样wordpress注册界面
  • 六安网站制作多少钱wordpress百度索引链接
  • 怎么查网站有没有做301做直播大秀的平台和网站
  • 网站的后台怎么做推荐网站网页
  • 济南网站微信wordpress视频教程 百度云
  • 网站推广方法有站酷网素材
  • 淮北之窗wordpress KeyWords优化
  • 哪个网站学做凉皮joomla 2.5:你的网站建设_使用与管理 下载
  • 河南省南水北调建设管理局网站西安建站
  • 被网站开发公司坑宁波seo优化
  • 网站开发职业分析重庆南川网站制作公司哪家专业
  • 爱站网官网做外贸的网站有何用处
  • 浙江网站建设技术公司wordpress 后台管理插件
  • 印刷电商网站开发壹搜网站建设优化排名
  • 云服务器上建网站慈溪企业网站seo