`

socket服务器推送技术

    博客分类:
  • java
阅读更多
package duisong;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Timer;

/**
* @author Administrator
*
*/
public class Server {
private int PORT = 9000;
private ServerSocket ss = null;
private Timer timer = new Timer();

public Server() {
try {
ss = new ServerSocket(PORT);
System.out.println("server start");
} catch (IOException e) {
e.printStackTrace();
}
}

/**
* @param args
*/
public static void main(String[] args) {
Server server = new Server();
server.startup();

}

public void startup() {
Socket s = null;
while (true) {
try {
s = ss.accept();
Handler handler = new Handler(s);
timer.schedule(handler, 1000, 3000);
} catch (IOException e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
}
}
}


-----------------------

package duisong;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Date;
import java.util.TimerTask;

/**
* @author Administrator
*
*/
public class Handler extends TimerTask {
private Socket socket;

public Handler(Socket socket) {
this.socket = socket;

}

@Override
public void run() {
String nowTime = (new Date()).toLocaleString();
try {
if (socket != null && socket.isConnected()) {
// 这里打个擦边球,先发送个紧急的数据包,如果发送发送了异常,说明客户端已经关闭了socket连接了,进入异常处理程序
socket.sendUrgentData(0xFF);
System.out.println(nowTime);
PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket
.getOutputStream()));
pw.append(nowTime);
pw.append("\r");
pw.flush();
}
} catch (IOException e) {
try {
e.printStackTrace();
socket.close();
} catch (IOException e2) {
}
this.cancel();
}

}

}

------------------------
package duisong;

import java.applet.Applet;
import java.awt.Label;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

/**
* 此程序eclipse运行良好,但是在IE中引入该Applet就出错了,提示access denied
* 是由于客户端的安全策略引起的,看来还是要用flash比较靠谱
*
*/
public class SocketApplet extends Applet implements Runnable {
Label text = new Label();
private Socket socket;
private BufferedReader br;

public SocketApplet() {

}

public void init() {
text.setText("time begin");
add(text);
try {
socket = new Socket("127.0.0.1", 9000);
br = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
text.setText("socket setup ok ...");
// 初始化完毕,启动线程处理
new Thread(this).start();
} catch (Exception e) {

text.setText(e.getMessage());
}
}

public void run() {
while (true) {
try {
text.setText(br.readLine());
} catch (IOException e) {

}
}
}

}


1.server端监听9000端口,如果client端有加入
  s = ss.accept();继续执行,进而执行逻辑,向client端口输出数据,
  否则,stop here

2.client端可以设计线程池,有序列的向服务器端发送请求。
  减少并发性操作服务器
分享到:
评论

相关推荐

    服务器推送技术

    【服务器推送技术】 服务器推送技术是一种网络通信模式,它与传统的客户端请求、服务器响应的HTTP协议有所不同。在传统的HTTP协议中,客户端(如浏览器)需要主动向服务器发送请求获取数据,而服务器推送技术则允许...

    服服务器推送技术服服务器推送技术.doc

    总之,服务器推送技术是Web技术的重要组成部分,它通过各种手段实现了服务器主动向客户端发送数据的能力,增强了Web应用的交互性和实时性,推动了Web向更接近桌面应用体验的方向发展。随着技术的进步,未来的服务器...

    python-websocket-socket 消息推送

    前端只需要保持WebSocket连接打开,就可以在接收到服务器推送的新消息时实时更新页面,而无需每次请求都刷新整个页面,提高了用户体验。 7. 后台多线程监听消息发送: 为了确保服务器能够同时处理多个客户端的连接...

    Comet服务器推送技术

    Comet服务器推送技术是一种在Web应用中实现服务器主动向客户端推送数据的技术,它解决了传统HTTP协议下只能由客户端发起请求的局限。随着Ajax技术的普及,开发者希望在浏览器环境中实现更接近桌面应用的实时交互,而...

    基于SuperSocket的消息推送详细说明文档1

    【基于SuperSocket的消息推送详细说明文档1】 本文档将详细阐述一个基于SuperSocket实现的消息推送项目的构建和工作原理。该项目旨在模拟手机APP向用户推送消息的功能,通过B/S(浏览器/服务器)和C/S(客户端/...

    服务器推送技术资料 server push

    在实际应用中,服务器推送技术广泛应用于金融市场的实时报价、社交媒体的通知提醒、在线游戏的实时同步以及物联网设备的数据推送等场景。随着技术的进步,服务器推送将更加成熟,为Web应用程序带来更加丰富的实时...

    oracle Socket监听数据库推送信息

    在Oracle数据库环境中,实现Socket监听数据库推送信息是一种实时获取数据变化的方法。这通常涉及到数据库触发器、存储过程以及Java编程的结合使用。以下是对这个主题的详细解释: 1. **Oracle触发器**: - 触发器...

    服务器推送技术[借鉴].pdf

    【服务器推送技术】是Web开发领域中的一种技术,旨在解决基于HTTP...随着WebSocket等现代协议的出现,服务器推送技术变得更加高效和标准化,实现了真正意义上的双向通信,为Web应用程序带来了桌面应用般的实时体验。

    Android socket编程实现消息推送Server+Client

    "SocketClient"文件则是客户端的代码,客户端首先需要连接到服务器,然后保持这个连接,以便随时接收服务器推送的消息。客户端可能还需要有一个心跳机制,定期发送小量数据来保持连接的活跃,以防因网络问题导致的...

    基于Socket套接字消息推送系统

    由于工期不是很紧,需求不是很严格,所以放弃了使用三方的推送框架,基于Socket自己写了消息推送功能(服务端+android端)。服务器端使用java,客户端使用Android。本人是做Android开发的,所以demo重点介绍客户端的...

    socket简单推送文件

    在这个"socket简单推送文件"的场景中,我们主要关注的是如何利用Socket来实现客户端(Client)向服务器端(Server)发送文件的功能。这个过程分为两个主要步骤:客户端的文件读取与封装,以及服务器端的接收与解封。...

    javaCV将socket获取的视频流推到流媒体(RTMP)服务器jar

    JavaCV 是一个强大的Java库,它为Java程序员提供了与...以上就是使用JavaCV将通过Socket获取的视频流推送到RTMP服务器涉及的核心技术点。在实际开发中,开发者需要理解这些技术,并结合具体需求进行相应的编程实现。

    弹幕、股票、实时新闻-服务器推送技术src

    本项目以“弹幕、股票、实时新闻-服务器推送技术src”为主题,通过Web JS Socket和后端Spring MVC框架来构建一个实时推送系统。下面将详细探讨相关的知识点。 1. **WebSocket协议**:WebSocket是HTML5引入的一种在...

    周一__5-13.zip_EDE8_socket_推送

    "周一__5-13.zip_EDE8_socket_推送"这个压缩包文件标题暗示了它可能包含了一个实现简单聊天功能的项目,其中涉及到了EDE8(可能是某种编码或者特定项目的标识)以及Socket编程和推送技术。接下来,我们将深入探讨...

    Web的数据推送技术

    1. **概述**:这是一种真正意义上的实时推送技术,通过维护客户端与服务器之间的长连接来实现数据的即时传输。相较于HTTP轮询,它可以显著减少服务器负载,并提供更低的延迟。 2. **技术细节**: - 需要在客户端和...

    接收Socket消息通过DWR推送到界面显示

    3. **DWR推送技术**:DWR的推送功能是其一大特色,它使得服务器可以主动将数据推送给客户端,而不是等待客户端发起请求。这种机制通常被称为Comet技术,它可以实现实时性,比如聊天应用、股票报价或者在线游戏等场景...

Global site tag (gtag.js) - Google Analytics