-
2020-10-22 10:29:16
package com.test; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.net.SocketTimeoutException; import java.util.HashMap; import java.util.Map; public class GreetingServer extends Thread{ private ServerSocket serverSocket; public GreetingServer(int port) throws IOException { serverSocket = new ServerSocket(port); serverSocket.setSoTimeout(10000); } public void run() { while(true) { try { System.out.println("Waiting for client on port " + serverSocket.getLocalPort() + "..."); Socket server = serverSocket.accept(); System.out.println("Just connected to " + server.getRemoteSocketAddress()); DataInputStream in = new DataInputStream(se
更多相关内容 -
Java可以监听客户端的请求、服务端的操作等。
2011-08-15 19:52:52可以监听客户端的请求、服务端的操可以监听客户端的请求、服务端的操作等。作等。 -
java socket 监听 服务端和客户端
2021-02-12 13:36:35[java]代码库package ...import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter...[java]代码库package cn.outofmemory.socket.example;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class App {
public static void main(String[] args) throws IOException {
int port = args.length > 0 ? Integer.parseInt(args[0]) : 19999;
ServerSocket server = new ServerSocket(port);
System.out.println("server waits client");
Socket client = server.accept();
System.out.println("client comes. please write to client");
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
BufferedReader consoleRdr = new BufferedReader(new InputStreamReader(System.in));
String line;
do {
line = consoleRdr.readLine();
if ("quit".equals(line)) {
break;
}
bw.write(line);
bw.write("\r\n");
bw.flush();
} while (true);
bw.close();
server.close();
System.out.println("bye");
}
}
//源代码片段来自云代码http://yuncode.net
package cn.outofmemory.socket.example;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
final int PORT = 19999;
Socket client = new Socket("localhost", PORT);
BufferedReader rdr = new BufferedReader(new InputStreamReader(client.getInputStream()));
do {
String line = rdr.readLine();
System.out.print("server said:");
System.out.println(line);
} while (true);
}
}
//源代码片段来自云代码http://yuncode.net
-
java实现socket从服务器连续获取消息的示例
2020-09-04 11:39:33主要介绍了java实现socket从服务器连续获取消息的示例,需要的朋友可以参考下 -
网络通信服务端监听请求的简单Demo
2016-09-07 03:38:15Java Socket通信中最基本的服务端监听客户端请求,收发数据的Demo。 -
java Socket 长链接拔网线检测
2014-06-09 13:18:17java Socket 长链接拔网线检测。 -
Java -socket接口(监听)
2021-02-12 14:37:46最近项目涉及到与C的通讯,目的是转发一下信息,Java这边使用的时监听Socket的接口,只要给C提供IP和端口 就行了。已知Socket的编程有 TCP和UDP协议,据说UDP更快一点 这里使用的UDP编程1.创建一个服务类...最近项目涉及到与C的通讯,目的是转发一下信息,Java这边使用的时监听Socket的接口,只要给C提供IP和端口 就行了。
已知Socket的编程有 TCP和UDP协议,据说UDP更快一点 这里使用的UDP编程
1.创建一个服务类PushPrinterServer
import com.util.GetByteEncode;
import com.util.HttpClientUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import static com.constants.PrinterSocketConstants.PRINTER_URL;
public class PushPrinterServer extends Thread {
private static final int PORT=9002;//监听的端口号
private static final Logger LOGGER = LoggerFactory.getLogger(PushPrinterServer.class);
private DatagramSocket datagramSocket=null;
public PushPrinterServer(DatagramSocket datagramSocket) {
if (datagramSocket==null){
try {
LOGGER.info("开启推送打印服务器端口"+PORT);
this.datagramSocket = new DatagramSocket(PORT);
}catch (Exception e){
LOGGER.error("开启socket推送打印服务出错");
e.printStackTrace();
}
}
}
@Override
public void run() {
try {
while (!this.isInterrupted()) {
// // 一旦有堵塞, 则表示服务器与客户端获得了连接
byte[] receiveData= new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
datagramSocket.receive(receivePacket);// 在接收到信息之前,一直保持阻塞状态
String encoding = GetByteEncode.getEncoding(receiveData);//编码判断
System.out.println("字符编码是:"+encoding);
ByteBuffer byteBuffer = ByteBuffer.wrap(receiveData);
CharBuffer gb18030 = Charset.forName("GB18030").decode(byteBuffer);
ByteBuffer utf8 = Charset.forName("UTF8").encode(gb18030);
String data= new String(utf8.array());
LOGGER.info("客户端发送消息:"+data);
try {
if(receiveData!=null){
HttpClientUtil.requestHttpPost(data,PRINTER_URL);
LOGGER.info("已向管理平台发送请求...");
}
} catch (Exception e) {
e.printStackTrace();
LOGGER.info("向管理平台发送请求失败");
}
}
} catch (Exception e) {
LOGGER.error("推送打印异常: " + e.getMessage());
}
}
public void closeSocketServer(){
if(null!=datagramSocket && !datagramSocket.isClosed())
{
LOGGER.info("关闭推送打印服务器");
datagramSocket.close();
}
}
}
-----------------------------------------------------------------------------------------------
receiveData 是监听接口收到是字节组的源数据,由于发过来的中文乱码,但一直处理不了,所有这里先查出源数据的编码格式,再进行处理,data是处理
完的数据,然后转发一下就好了。
2.创建一个监听类PushPrinterSocketServiceLoader
网上许多写的多写在main方法里面,但是真实的项目怎么办呢,要让它项目已启动就开启线程监听,创建监听类
import com.service.PushPrinterServer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class PushPrinterSocketServiceLoader implements ServletContextListener {
//socket server 线程
private PushPrinterServer pushPrinterServer;
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
if(null==pushPrinterServer)
{
//新建线程类
pushPrinterServer=new PushPrinterServer(null);
//启动线程
pushPrinterServer.start();
}
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
if(null!=pushPrinterServer && !pushPrinterServer.isInterrupted())
{
System.out.println("推送打印服务器关闭");
pushPrinterServer.closeSocketServer();
pushPrinterServer.interrupt();
}
}
}
3.在web.xml添加配置
com.listener.PushPrinterSocketServiceLoader
-
java如何监听MQTT客户端状态(在线、离线)
2021-03-06 16:20:26其实这个在MQTT协议中已经给出系统主题,MQTT服务端可以知道客户端的任何情况,比如:什么时候上线和下线。二、解决方案$SYS/brokers/${node}/clients/${clientid}/connected:上线事件。当某客户端上线时,会向该...一、业务场景
好多朋友在咨询如何得知(监测)MQTT客户端状态(在线、离线),或者可以说是监测采集器状态。
其实这个在MQTT协议中已经给出系统主题,MQTT服务端可以知道客户端的任何情况,比如:什么时候上线和下线。
二、解决方案
$SYS/brokers/${node}/clients/${clientid}/connected:上线事件。当某客户端上线时,会向该主题(Topic)发布消息
$SYS/brokers/${node}/clients/${clientid}/disconnected:掉线事件。当某客户端掉线时,会向该主题(Topic)发布消息
当然在开发的时候我们订阅两个主题比较麻烦,在这里我们可以采用主题通配符模式直接订阅一个主题即可:
$SYS/brokers/+/clients/#
这样比较方便,只不过需要我们在回调函数中进行Topic主题的区分就可以了,例如:
/**
* subscribe后得到的消息会执行到这里面
*/
@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
String msg = new String(message.getPayload());
try {
JSONObject jsonObject = JSON.parseObject(msg);
String clientId = String.valueOf(jsonObject.get("clientid"));
if (topic.endsWith("disconnected")) {
log.info("客户端已掉线:{}",clientId);
} else {
log.info("客户端已上线:{}",clientId);
}
} catch (JSONException e) {
log.error("JSON Format Parsing Exception : {}", msg);
}
}
-
netty做服务端监听多个端口推送数据并区分接收每个端口响应回来的数据
2019-08-20 10:05:53netty 做服务端监听多个端口推送数据并区分接收每个端口响应回来的数据: @Sharable:被注解的ChannelHandle对应的同意实例可以被加入到一个或者多个ChannelPipelines一次或者多次,而不存在竞争条件。 * 如果在创建... -
java 如何在服务器端用socket创建一个监听端口,并在客户端发送信息
2022-01-22 23:12:41服务端: try { ServerSocket serverSocket = new ServerSocket(9000);//建立端口号为9000 Socket socket = serverSocket.accept();//等待客户端的连接 InputStream is = socket.getInputStream();//接受客户端... -
java服务端处理ios内购回调通知示例
2021-06-17 20:37:40有没有大佬有java服务端处理ios内购回调通知示例 -
java集成TCP协议,设置端口监听、多个客户端可连接同一个端口
2021-09-06 16:05:36服务端设置 //服务端 @Order(value = 10) @Component public class TpcServer implements ApplicationRunner{//服务启动是方法自动启动 private int port = 9989;// 默认服务器端口 private Logger log; public ... -
实现Java Socket 客户端服务端交互实例
2021-02-12 13:36:31import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public classSock... -
详解个推java服务端集成
2019-03-30 11:44:05三、推送方式 个推提供JAVA、C#、PHP、Python等多种语言版本的服务端API SDK,可以和各种第三方应用服务器技术架构进行对接。为了最大程度提高消息推送性能,第三方开发者需要根据业务需求合理选择消息推送形式。... -
java端口监听(模拟tomcat处理请求过程)
2020-05-21 17:15:18首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信。这样就有两个Socket了,客户端和服务端各一个。 ... -
Java socket服务端
2019-05-13 22:12:20本文主要讲解java socket服务端通信内容,服务端监听客户端,并且获取客户端的消息。 监听的主要代码是一个while死循环,因为需要实现持续监听。读者可重点阅读MySocketServer 类的代码。详细代码如下: package ... -
Java 监听器
2021-03-06 03:35:39监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。例:ServletContextListener监听ServletContext对象。新建一个web... -
Java实现socket服务端长连接
2021-05-18 10:50:13Java实现socket服务端长连接 import java.io.*; import java.net.Socket; public class ServerThread extends Thread{ private Socket socket = null; public ServerThread(Socket socket) { this.socket = ... -
TcpListener 监听服务端
2012-09-20 16:07:31TcpListener 监听服务端,可实现多客户端连接 -
java-tomcat websocket servlet侦听端口
2021-02-13 00:51:19我找到了一个websocket聊天的示例,但是我不知道如何为websocket服务器(在此servlet中实现)指定监听端口?例如,我需要在端口11337上侦听客户端连接.但是我该如何表达呢?OK,这是(简体)代码:public class TestServlet... -
Java监听器详解
2019-08-17 18:47:42一.监听器的定义 ...web监听器由servlet规范提供的,它可以监听客户端的请求,服务端的操作,监听的对象包括ServletContext,HttpSession,ServletRequest三个预对象(内置对象),分别对应aplication,s... -
Java监听器Listener使用说明
2021-03-10 04:46:001、什么是Java监听器监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。2、Listener接口分类1.1>... -
Java基础教程之事件和监听器
2021-02-26 17:17:25事件监听器是经常可以遇到的一种设计模式,一般用在这样一种场景下:当模块的一部分A在完成后需要通知其他的软件模块B,而等待通知的模块B在事先不需要采用轮询的方式来查看另一个模块A是否通知自己。即,当某事件... -
JAVA TCP通信(客户端-服务端)
2021-04-05 21:03:52一、简单通信 ①客户端发送数据 // 创建客户端的socket服务,指定目的主机和端口 Socket sc = new Socket(" 172.20.1.34", 10000); // 为了发送数据,应该获取socket中的...②服务端接收数据 public static void main(S -
Java实现后台发送及接收json数据的方法示例
2020-10-17 15:04:12主要介绍了Java实现后台发送及接收json数据的方法,结合实例形式分析了java针对json格式数据的传输与操作相关技巧,需要的朋友可以参考下 -
springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推...
2022-03-14 14:33:25SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE)。本文介绍它的用法。 在很多业务场景中,会涉及到服务端向客户端发起推送通知,但HTTP 协议无法做到... -
Java socket 服务端如何监控客户端异常关闭?
2021-03-16 19:57:12慕函数4003404关闭是会抛出异常的,捕捉之后进行处理,退出循环@Overridepublic void run() {Boolean isExit = false;while (!isExit) {try {InputStream is = socket.getInputStream();InputStreamReader isr = new... -
java的socket编程服务端一直收不到客户端信息
2020-06-06 23:30:11服务端一直收不到客户端的信息,我很奇怪,因为我前几天做实验的时候,客户端和服务端是都能互相接收信息的,怎么到这里就不行了? 以下是Client的问题代码: package com.jie.code05.client.service; import ... -
Java的UDP服务端
2019-05-15 21:38:52本文主要是讲Java的UDP服务端接收客户端消息的实现过程 package com.Demo; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import ... -
Socket客户端能否持续监听服务器发送的消息
2021-03-03 11:15:49现在项目有需求,需要接受Socket服务器推送的数据来实时展示,我们之前是做的定时任务每秒钟获取一次inputstream,现在想监控socket的变化,但是我看了看源码觉得我没办法实现,...