java Socket通信 长连接 [问题点数:100分,结帖人yc_8301]

一键查看最优答案

确认一键查看最优答案?
本功能为VIP专享,开通VIP获取答案速率将提升10倍哦!
Bbs1
本版专家分:22
结帖率 100%
Bbs5
本版专家分:3707
Bbs7
本版专家分:17905
Blank
蓝花 2010年3月 Java大版内专家分月排行榜第三
Bbs5
本版专家分:3707
Bbs1
本版专家分:100
Bbs1
本版专家分:10
Bbs7
本版专家分:17905
Blank
蓝花 2010年3月 Java大版内专家分月排行榜第三
Bbs7
本版专家分:12688
Blank
红花 2010年11月 扩充话题大版内专家分月排行榜第一
2010年10月 扩充话题大版内专家分月排行榜第一
Blank
黄花 2010年12月 扩充话题大版内专家分月排行榜第二
2010年8月 扩充话题大版内专家分月排行榜第二
2010年7月 扩充话题大版内专家分月排行榜第二
2010年6月 扩充话题大版内专家分月排行榜第二
Blank
蓝花 2010年6月 Java大版内专家分月排行榜第三
2010年5月 扩充话题大版内专家分月排行榜第三
2010年4月 扩充话题大版内专家分月排行榜第三
Bbs1
本版专家分:22
Bbs5
本版专家分:3707
Bbs4
本版专家分:1146
Bbs1
本版专家分:41
Bbs2
本版专家分:102
Bbs1
本版专家分:5
Bbs1
本版专家分:0
java socket连接客户端服务端(标准实例)
<em>java</em> socket<em>长</em><em>连接</em>客户端服务端(标准实例),准确无误,流行结构。
JAVA Socket连接
注:先启动Server端在启动Client端: <em>Socket</em>Client端: import <em>java</em>.io.BufferedReader; import <em>java</em>.io.BufferedWriter; import <em>java</em>.io.InputStreamReader; import <em>java</em>.io.OutputStreamWriter; import <em>java</em>.net.<em>Socket</em>; p...
JAVA连接与短连接
最近在使用极光推送,听用过的同事讲了句:使用<em>长</em><em>连接</em>,心跳机制等知识点,很是熟悉,但是又不能明确的说出其中的不同,所以这里总结下。 <em>长</em><em>连接</em>,指在一个<em>连接</em>上可以连续发送多个数据包,在<em>连接</em>保持期间,如果没有数据包发送,需要双方发链路检测包。 1、开发的大多数网站action请求数据都是短<em>连接</em>: 短<em>连接</em>是指通讯双方有数据交互时,就建立一个<em>连接</em>,数据发送完成后,则断开此<em>连接</em>,即每次<em>连接</em>只完成一项业务的...
socket通信中的连接和短连接
转自:https://blog.csdn.net/<em>java</em>jxz008/article/details/50468134 更加详细的分析:https://www.cnblogs.com/xujiming/p/5448721.html 一般的socket<em>通信</em>过程:            建立<em>连接</em> ①客户端----------------服务端            通讯 ②客户端----...
java socket 多次反复通信
我用<em>java</em> socket实现简单的通讯功能,在做登陆的时候,客户端将用户名密码读取出来 发送给服务器(这是第一步),服务器读取信息后校验(这是第二步),校验后发送给客户端,客户端读取是否登陆成功的消息(这是第三步),但是,第一步第二步都没问题,但客户端无法将服务器再次发送的消息读取出来,下面是我的部分代码,我不知道怎么实现这种多次反复<em>通信</em>的问题,希望大家不吝赐教。 服务器代码: output = new OutputStreamWriter(socket.getOutputStream()); input = new DataInputStream(socket.getInputStream()); byte [] b2=new byte[1024]; int len=input.read(b2); String str = new String(b2,0,len); //读取用户名密码 System.out.println("客户端接收到的用户名密码:"+str); //此处校验代码省略,假设用户名密码正确 output.write("reponse:1"); //发送给客户端登陆消息 System.out.println("服务器消息:登陆消息已发给客户端"); 服务器控制台: 已启动监听,调用线程进入等待阶段…… 服务器消息,客户端已响应 服务器消息:服务器已经建立与客户端的<em>连接</em>,客户端ip:/127.0.0.1 已启动监听,调用线程进入等待阶段…… 客户端接收到的用户名密码:command:1;userName:username;passWord:password 服务器消息:登陆消息已发给客户端 客户端代码: input = new BufferedReader( new InputStreamReader(socket.getInputStream())); DataOutputStream output = new DataOutputStream(socket.getOutputStream()); byte[] b = MainWindow.DATA.getBytes(); //将用户名密码转化为byte output.write(b); //发送给服务器 System.out.println("用户名,密码信息已发送"); output.flush(); String str = input.readLine(); //读取服务器消息 System.out.println("客户端消息:已读取到登录信息"); if(str.equals("reponse:1")){ LoginDialogs.AUTH = true; //授予客户端登录权限 } System.out.println(LoginDialogs.AUTH); 客户端控制台: 已<em>连接</em> 登陆按钮消息:已点击 用户名,密码信息已发送
JAVA中Socket对象如何重用多次?
试了一下,目前已知的 让socket发送流中的数据 只有一下三种方式 1.shutDown流 2.close流/close socket 3.sendUrgentData 前两种都会socket对象无法再次使用,如果想多次发送数据,只能用第3种。 有更优雅的方式实现socket重用吗?
(java)socket全双工连接通信实例
(借鉴备忘)直接上代码: client: import <em>java</em>.io.InputStreamReader; import <em>java</em>.io.OutputStreamWriter; import <em>java</em>.io.PrintWriter; import <em>java</em>.io.Reader; import <em>java</em>.net.<em>Socket</em>; import <em>java</em>.nio.CharBuffer; publ
两个服务器A,B之间保持连接通信
业务场景: 两个服务器A,B之间保持<em>长</em><em>连接</em>(上面说需要使用<em>长</em><em>连接</em>)。当A有新数据时,通过<em>长</em><em>连接</em>把数据推送给B,实现数据同步。请问大佬该怎么做呢?有demo吗?
Java-Socket服务端和多个客户端连接
<em>Socket</em> 建立网络<em>通信</em><em>连接</em>至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是<em>Socket</em>编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;<em>Socket</em>是发动机,提供了网络<em>通信</em>的能力。 短<em>连接</em> 服务端和客户端建立<em>连接</em>后,客户端获取流来和服务端通讯,通讯完毕后,关闭流,关闭Soc...
java--socket连接与短连接介绍
<em>长</em><em>连接</em>与短<em>连接</em> 所谓<em>长</em><em>连接</em>,指在一个TCP<em>连接</em>上可以连续发送多个数据包,在TCP<em>连接</em>保持期间,如果没有数据包发送,需要双方发检测包以维持此<em>连接</em>,一般需要自己做在线维持。  短<em>连接</em>是指<em>通信</em>双方有数据交互时,就建立一个TCP<em>连接</em>,数据发送完成后,则断开此TCP<em>连接</em>,一般银行都使用短<em>连接</em>。   比如http的,只是<em>连接</em>、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭<em>连接</em>。 
JAVA实现连接(含心跳检测)Demo
实现原理:        <em>长</em><em>连接</em>的维持,是要客户端程序,定时向服务端程序,发送一个维持<em>连接</em>包的。        如果,<em>长</em>时间未发送维持<em>连接</em>包,服务端程序将断开<em>连接</em>。 客户端:        Client通过持有<em>Socket</em>的对象,可以随时(使用sendObject方法)发送Massage Object(消息)给服务端。        如果keepAliveDelay毫秒(程序中是2秒
java socket连接服务端
<em>java</em> socket<em>长</em><em>连接</em>服务端的实现 网络编程都是最底层都是基于socket的,鉴于客户端需要一直发送消息,使用短<em>连接</em>就不适合了,因为建立socket<em>连接</em>后发送完数据又马上断开<em>连接</em>。而<em>长</em><em>连接</em>通过客户端的心跳机制一直保持<em>连接</em>,不管当前是否接收和发送数据。<em>长</em><em>连接</em>服务端代码如下: package com.starit.ipran.socket; import <em>java</em>.
java socket连接
<em>java</em> socket<em>长</em><em>连接</em>,支持一个服务器向多个客户端推送消息; 客户端和服务端互相监听,每一个一个客户端断开服务端都有监听。客户端和服务端都做了封装,调用简单。数据<em>通信</em>使用Gson,bean和js
关于java的socket链接
需求:用户登录之后通过首页socket链接服务端.链接之后需要发送心跳包保持链接,但用户退出之后如果没有关闭该<em>长</em>链接,那么就会一直保存这个<em>长</em>链接在tomcat里面, 问题:但当用户第二次登录,如何找到
请教java socket连接问题
我想建立socket<em>长</em><em>连接</em>,建立一个<em>连接</em>可连续发送多次数据。现在遇到的问题是,服务端程序在监听时无法判断客户端传送数据是否完成,如果我在客户端使用socket.shutdownOutput();那么我
JAVA之连接、短连接和心跳包
短<em>连接</em>: client向server发起<em>连接</em>,server接到请求,双方建立<em>连接</em>,client向server发送消息,server回应client,一次读写完成双方都可以发起close请求 优点:短<em>连接</em>对于服务器来说较为简单,存在的<em>连接</em>都是有用的<em>连接</em>,不需要额外的控制。 缺点:如果客户端<em>连接</em>频繁,会在tcp的建立和关闭上浪费时间。 <em>长</em><em>连接</em>: client向server发起<em>连接</em>,server...
JAVA连接demo
大致解释一下什么意思: <em>长</em><em>连接</em>的维持,是要客户端程序,定时向服务端程序,发送一个维持<em>连接</em>包的。 如果,<em>长</em>时间未发送维持<em>连接</em>包,服务端程序将断开<em>连接</em>。 客户端: 通过持有Client对象,可以随时(使用sendObject方法)发送Object给服务端。 如果keepAliveDelay毫秒(程序中是2秒)内未发送任何数据,则,自动发送一个KeepAlive对象给服务端, 用于维持连
Java Socket 在已经实现连接的情况下,服务端该如何处理来自不同客户端数据的传递转发
在已经实现客户端发什么,服务端就回什么数据的情况下,服务端该怎么样处理来自不同客户端的数据,把数据传递给其他的客户端发回去
java Socket 连接 心跳包 客户端 信息收发 demo
import <em>java</em>.io.IOException; import <em>java</em>.io.InputStream; import <em>java</em>.io.OutputStream; import <em>java</em>.net.<em>Socket</em>; import <em>java</em>.net.UnknownHostException; /** * @author 某家: * @version 创建时间:2015年8月17日 下午3
连接与短连接
<em>长</em><em>连接</em>与短<em>连接</em> 所谓<em>长</em><em>连接</em>,指在一个TCP<em>连接</em>上可以连续发送多个数据包,在TCP<em>连接</em>保持期间,如果没有数据包发送,需要双方发检测包以维持此<em>连接</em>,一般需要自己做在线维持。 短<em>连接</em>是指<em>通信</em>双方有数据交互时,就建立一个TCP<em>连接</em>,数据发送完成后,则断开此TCP<em>连接</em>,一般银行都使用短<em>连接</em>。  比如http的,只是<em>连接</em>、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭<em>连接</em>。 其实<em>长</em><em>连接</em>是...
基于socket的心跳连接
案例:  心跳:  socket模拟网页的报文<em>连接</em>某个网站,创建tcp的socket后,当我socket.connect后,如果在5到7秒钟不socket.send,那么这个链接就失效了。 请问如何<em>长</em>时间的保持这个链接  这是在服务器端的设置的,客户端没法设置,可以发送心跳包。  socket.connect后,每3-4秒用socket.send发送一字节数据(内容随便),然后观查这个<em>连接</em>
请教各位大神,java socket通信如何实现连接
如题,多个客户端<em>连接</em>同一个server, 每来一个<em>连接</em>创建一个线程,除了定时发送心跳帧还有别的方法么?如果要使用心跳,心跳间隔最多是多<em>长</em>时间?
java socket 连接的问题
那位仁兄,给我提供一个<em>java</em> socket <em>长</em><em>连接</em>的例子啊。 谢谢了!
Java中Socket连接多线程通信,请大家帮忙写个简单的示例
谁可以帮我写一个简单的<em>Socket</em><em>长</em><em>连接</em>在客户端使用多线程向服务端发送接收数据的程序供我参考下呢? 要求是这样的: 1.在客户端建立一个<em>长</em><em>连接</em>(把代码也写上,多谢了!) 2.客户端向服务端可以连续发送
java socket超时出现 read time out 错误(服务端)
这段代码本来意思是当服务端接收不到数据的情况下,时间超过10秒,就抛出socketexception异常,显示!!!<em>连接</em>超时!!!,然后再尝试给客户端发送一个心跳包,如果捕获到异常,则说明客户端已经
Android、Java中Socket通信的inputStream.read()时间了有时候一直返回-1
开发一个即时通讯app,用到<em>Socket</em><em>通信</em>: <em>Socket</em><em>连接</em>部分代码如下: <em>Socket</em>Address address = new Inet<em>Socket</em>Address(socketConstant
java socketServer高并发的连接数量最优调整
有一个<em>java</em>服务端程序,存在两个socketServer,分别监听在两个端口上,当前服务器的配置16核64G内存,至强处理器,当前最多能<em>连接</em>多少客户端并保持<em>长</em><em>连接</em>(因为存在很多线程,线程的上下文切换
java socket 连接发送数据
Client: <em>Socket</em> ss = null; InputStream in = null; DataOutputStream dos = null; public My<em>Socket</em>Client() { } public static byte[] intToBytes(int v) { byte[] b = new byte[4]; b[0...
java socket连接传输文件
一个简单的demo,实现Java socket文件传输。线程就不写了,只为了实现文件传输。 前面四个字节表示文件大小(<em>长</em>度),后面为数据体,数据体往后五个字节表示文件后缀名,后缀名超过五个字节的,则为二进制文件,丢弃文件后缀。 服务端接收 下面是服务端代码: package receptionData; import <em>java</em>.io.File; import <em>java</em>.io.FileOu...
java socket 连接实例
<em>java</em> socket 的<em>长</em><em>连接</em>实例,服务器端支持多个客户端<em>连接</em>,服务器端支持客户端的掉线检测。多线程编程
纯Java的高性能连接RPC解决方案
  简介:轻量封装Ibatis3          因为本人在国内最大的电子商务公司工作期间,深感一个好的分表分库框架可以大大提高系统的承载能力及系统的灵活性,而一个不好的分表分库方案,则让系统在大数据量处理的时候非常郁闷。所以, 在根据笔者在从事电子商务开发的这几年中,对各个应用场景而开发的一个轻量封装Ibatis3的一个分表分库框架。          笔者工作的这几年之中,总结并开发...
java 如何让socket的两端一直保持着开放,随时接受和发送数据?
<em>java</em> 如何让socket的两端一直保持着开放,随时接受和发送数据?
java socket连接编码
<em>java</em> socket<em>长</em><em>连接</em>编码 package com.sinosoft.cp.socket; import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.sinosoft.cp.bean.info.DeviceInfo; import com.sinosoft.cp.dtos.DeviceInfoDto;...
Java Socket编程中处理连接的方法
因为实习可能要用Java,所以学习了一下Java,正好计算机网络实验要写一个Web服务器,可以用来练练手。 实现Web服务器时,最基本的流程就是当有客户端<em>连接</em>服务器时,把<em>连接</em>交给一个线程,由这个线程来处理这个<em>连接</em>。处理的流程也很简单,就是读取一个请求,然后返回响应。 我第一步准备实现服务器读取完客户端的请求后,再将这些请求返回给客户端,用来测试我前期的工作,然后再进行下一步。因为在这一步我没有想
Java Socket 连接通信
 最近项目中有个需求,要用<em>Socket</em>实现<em>长</em><em>连接</em>,并且在<em>通信</em>过程中要互为server和client,即在一个<em>连接</em>中,既能够发送消息,(此时作为客户端),又要能够接收消息(此时作为server端),研究了下,实现方式如下: 一、发送消息时建立<em>连接</em>,构建通道。  <em>Socket</em> socket = new <em>Socket</em>(); <em>Socket</em>Address endpoint = n
Java 链接示例
JAVA实现<em>长</em><em>连接</em>(含心跳检测)Demo,基于https://blog.csdn.net/zmx729618/article/details/54378259该作者的博文实现的代码示例。
java socket 连接事例
我们知道<em>java</em>的socket是基于TCP的<em>连接</em>,而Server<em>Socket</em> 的accept()方法是阻塞的,直到有客户端<em>连接</em>到服务器端,我们常用多线程的方式来实现服务器端响应多个客户端,以下是代码:
Java Socket连接实现
TestScoket.<em>java</em> 单例模式实现,继承<em>Socket</em> 1 public class Test<em>Socket</em> 2 extends <em>Socket</em> { 3 4 private static Test<em>Socket</em> instance; 5 6 private Test<em>Socket</em>() { 7 } 8
java socket编程 链接处理
在进行Java socket编程的时候,涉及到两种链接方式,一种是短<em>连接</em>,一种是<em>长</em><em>连接</em>。当我们在学习网络编程TCP的时候,一般都只是涉及到短<em>连接</em>编程,很少辉涉及到<em>长</em><em>连接</em>,那么什么是<em>长</em><em>连接</em>,什么是短<em>连接</em>呢?1.概念:短<em>连接</em>:指建立SOCKET<em>连接</em>后发送后接收完数据后马上断开<em>连接</em>,比如http,只是<em>连接</em>、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭<em>连接</em>。<em>长</em><em>连接</em>:指建立SOCKET<em>长</em>
Serlvet 处理http请求并保持连接
一.Servlet,一个请求在容器中是如何处理的 Servlet规定的,相应客户请求访问特定Servlet流程如下: 1.客户端发出请求。 2.Servlet容器接收客户请求解析。 3.Servlet容器创建一个ServletRequest对象。 其中包含客户请求信息及其他关于客户的信息如请求头,请求正文,客户机的IP等。 4.容器创建一个ServletResponse对象。 5.容
java-socket编程_ 2.socket保持连接
socket保持<em>长</em><em>连接</em>、模拟学生行为记录 本篇基于上一篇的demo,加上工作遇到的情况, 记录一个简单的保持<em>长</em><em>连接</em>的方法,希望对自己对需要使用socket编程的有点用处。 现状: 某学校有一个学生行为系统, 比如 张三进入教室,离开教室, 吃饭,出校门,进入校门等。  改系统发送数据使用xml的形式(学校提供xml说明文档)。 需求:需要使用<em>java</em>代码<em>连接</em>该学校的 socket 学
Java实现连接
参数文章: http://yanyaner.com/blog/2014/02/17/comet-<em>java</em>/ http://wenku.baidu.com/link?url=LCnFizDilwonZ-UyhxJfUqa-fQsBFEU1MfAHq_06Yi738ZHE1C3Bi8aJ_c9Iv21rEuQvv5tYxFp8ZCUQ5DAuhxMUEWVy3nhMlxCNsNr8oyq###
Socket连接与短连接
<em>长</em><em>连接</em>与短<em>连接</em> 所谓<em>长</em><em>连接</em>,指在一个TCP<em>连接</em>上可以连续发送多个数据包,在TCP<em>连接</em>保持期间,如果没有数据包发送,需要双方发检测包以维持此<em>连接</em>,一般需要自己做在线维持。  短<em>连接</em>是指<em>通信</em>双方有数据交互时,就建立一个TCP<em>连接</em>,数据发送完成后,则断开此TCP<em>连接</em>,一般银行都使用短<em>连接</em>。   比如http的,只是<em>连接</em>、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭<em>连接</em>。 
Socket 连接连接 心跳 JAVA SOCKET编程
简单解释就是: 短<em>连接</em>:jian
java 心跳包 实现连接
<em>java</em> 心跳包 实现<em>长</em><em>连接</em>。由客户端和发送请求,请高手将客户端和服务器端代码发到我邮箱lilianplayer@163.com,别忘了将csdn用户名写上,方便给分。注释请写清楚。谢谢!!!
java socket保持连接
Server<em>Socket</em> server<em>Socket</em>=new Server<em>Socket</em>(1111); <em>Socket</em> socket=server<em>Socket</em>.accept(); while(true){//保持<em>长</em><em>连接</em> try { Thread.sleep(100);//等待时间 } catch (InterruptedException e1) {
Java socket 连接与短链接
 <em>长</em><em>连接</em>是一旦一个客户端登陆上服务器,其与服务器之间的<em>连接</em>就不关闭,不管他们之间进行了多少次交易,直到客户端退出登陆或网络出现故障。 这种技术在联机交易系统实现有利于提高效率。     短<em>连接</em>是客户端每发一个请求就与服务器建立一个<em>连接</em>,交易完成后关闭<em>连接</em>,这种技术实现较<em>长</em><em>连接</em>简单。 <em>长</em>:connect连上后不断开,进行多次收发操作.     短:每次都connect,完成任务后
Socket连接之Android Studio运行Java程序
studio Java程序 <em>Socket</em><em>长</em><em>连接</em>
TCP/IP,http,socket,连接,短连接
转载自http://my.oschina.net/ksfzhaohui/blog/95803   TCP/IP TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传输层中有TCP协议与UDP协议。 在应用层有:TCP包括FTP、HTTP、TELNET、SMTP等协议
Java 与 JavaScript 对websocket的使用
ebsocket,HTML5中新一代全双工<em>通信</em>协议。其底层仍然是http协议。 传统 HTTP 请求响应客户端服务器交互图 Web<em>Socket</em> 请求响应客户端服务器交互图 Web<em>Socket</em> 客户端支持 浏览器支持情况 Chrome Chrome version 4+支持 Firefox Firefox versio...
java socket 连接奇怪的问题
我有一个类,负责通过SOCKET<em>长</em><em>连接</em>与服务器端通讯。 这个循环读取一个队列来发送。 问题来了,在本类的MAIN方法中向队列中添加数据,就可以发送出去,在SERVLET中,通过HTTP请求添加,就是发送不出去!请大家帮忙看看,谢谢。下面是这个主要类的代码。 /** * */ package com.dianshangwang.lianhepayfront.service; import <em>java</em>.io.BufferedReader; import <em>java</em>.io.IOException; import <em>java</em>.io.InputStreamReader; import <em>java</em>.io.PrintWriter; import <em>java</em>.io.UnsupportedEncodingException; import <em>java</em>.net.Inet<em>Socket</em>Address; import <em>java</em>.net.<em>Socket</em>; import <em>java</em>.net.<em>Socket</em>Exception; import <em>java</em>.util.HashMap; import <em>java</em>.util.LinkedList; import <em>java</em>.util.Map; import <em>java</em>.util.Queue; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; import com.dianshangwang.lianhepayfront.global.Config; import com.google.gson.JsonObject; import com.google.gson.JsonParser; /** * @author lay * @date 2013年11月4日 */ public class IcardpayClient { private static Logger log = Logger.getLogger(IcardpayClient.class); private static <em>Socket</em> socket; private static BufferedReader reader; private static PrintWriter writer; private static Thread sendThread; private static Thread receiveThread; private static Thread monitorThread; private static boolean isRunning = false; /** * 心跳计数器 若此值与当前时间戳值小于60000则认定断线,进行重联操作 */ private static Long heartbeatTimestamp = System.currentTimeMillis(); private static IcardpayClient instance = new IcardpayClient(); private IcardpayClient() { } public static IcardpayClient getInstance() { return instance; } public static void main(String[] args) { BasicConfigurator.configure(); IcardpayClient client = new IcardpayClient(); client.start(); MsgQueue.sendQueue.add("{\"agentNo\":\"A10342hp\",\"tradeType\":\"256\",\"sessionId\":\"1\"}"); } public void start() { init(); sendThread = new Thread(new SendThread());// 启动读线程 receiveThread = new Thread(new ReceiveThread());// 启动收线程 monitorThread = new Thread(new MonitorThread()); // 启动监视线程 sendThread.setName("icardpay-send-thread"); receiveThread.setName("icardpay-receive-thread"); monitorThread.setName("icardpay-monitor-thread"); // sendThread.setDaemon(true); // receiveThread.setDaemon(true); // monitorThread.setDaemon(true); sendThread.start(); log.info("SOCKET发送线程开启!"); receiveThread.start(); log.info("SOCKET接收线程开启!"); // monitorThread.start(); // log.info("SOCKET监视线程开启!"); } public void restart() { stop(); init(); } public void stop() { isRunning = false; } private void init() { socket = new <em>Socket</em>(); try { socket.setKeepAlive(true); socket.connect(new Inet<em>Socket</em>Address(Config.icardpayHost, Config.icardpayPort)); reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8")); writer = new PrintWriter(socket.getOutputStream()); heartbeatTimestamp = System.currentTimeMillis(); log.info("已创建与支付通的SOCKET<em>连接</em>!"); isRunning = true; } catch (<em>Socket</em>Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void write(String msg) { writer.println(msg); writer.flush(); log.info(Thread.currentThread().getName() + "发送:" + msg); } private String read() throws IOException { String msg = reader.readLine(); if (msg != null) { log.info("接收:" + msg); } return msg; } class SendThread implements Runnable { @Override public void run() { while (isRunning) { if (!MsgQueue.sendQueue.isEmpty()) { String v = MsgQueue.sendQueue.poll(); write(v); } try { Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } } } } class ReceiveThread implements Runnable { @Override public void run() { while (isRunning) { String content = null; try { content = read(); } catch (IOException e1) { log.error("SOCKET读取异常,将重新启动。。。", e1); restart(); continue; } if (null == content || content == "") { continue; } JsonObject obj = new JsonParser().parse(content).getAsJsonObject(); if (obj.has("tradeType") && "0".equals(obj.get("tradeType").getAsString())) { // 收到心跳包, 刷新计数器 heartbeatTimestamp = System.currentTimeMillis(); continue; } if (!obj.has("sessionId")) { log.info("收到未标识的包:" + obj.toString()); continue; } String id = obj.get("sessionId").getAsString(); if (MsgQueue.listeners.containsKey(id)) { MsgQueue.listeners.get(id).received(content); MsgQueue.listeners.remove(id); } else { log.info("接收到过期包:" + content); } try { Thread.sleep(100); } catch (InterruptedException e) { // 忽略 } } } } class MonitorThread implements Runnable { String heartbeat = "{\"agentNo\":\"A10342hp\",\"tradeType\":\"0\"}"; @Override public void run() { while (isRunning) { if (System.currentTimeMillis() - heartbeatTimestamp >= 60000) { // SOCKET已失效 restart(); } // 发送心跳包 write(heartbeat); try { Thread.sleep(5000); } catch (InterruptedException e) { // 忽略 } } } } }
Java Socket收发异步连接
最近做SSO的项目,其中用到了socket<em>长</em><em>连接</em>.一直都是看代码的,但是要求socket做成SSL的,不得不动手写写代码了.下面我给出一个简单的socket<em>长</em><em>连接</em>. Java代码 <em>Socket</em>Client.<em>java</em>  <em>Socket</em>Client.<em>java</em> Java代码 import <em>java</em>.io.IOException; 
小弟初学java socket,想知道什么是连接,什么是短连接
上网查了一些资料,<em>长</em><em>连接</em>和短<em>连接</em>的意思大致明白了,但是具体的代码怎么实现,希望有朋友不吝赐教一下,写一个<em>长</em><em>连接</em>的例子和一个短<em>连接</em>的例子,本人好学习一下,谢了!!!!
Java的socket连接实例
自己写的Java的socket<em>长</em><em>连接</em>实例 已测试
socket连接,心跳包怎么实现啊
最近在做软件和硬件的开发 要用到socket和硬件去联系,我这边是服务端,是socket<em>长</em><em>连接</em>形式,可以打开多个客服端和我这边服务端<em>通信</em>,正常<em>通信</em> 接受和发送都实现了 没问题,现在就是 客服端会每隔3
Java socket连接代码实现
服务器端程序: import <em>java</em>.io.*; import <em>java</em>.net.*; import <em>java</em>.util.*; public class ChatServer { boolean started = false; Server<em>Socket</em> ss = null; List clients = new ArrayList(); public static void ma
Java Socket连接异步单工保持心跳
<em>Socket</em>异步单工<em>长</em><em>连接</em>心跳机制
c# Socket TCP 连接的一些问题
创建一个负责监听的<em>Socket</em>,每当有一个客户端<em>连接</em>的时候,这时候是不是需要创建一个线程来维护这个<em>Socket</em><em>连接</em>? 换句话说是不是每一个客户端就需要一个线程来维护,如果是的话,是不是需要收、发信息都各需要一个线程,那这样一个客户端不是至少需要两个线程,若这样的思路是对的, 那假设有1000个客户端 那服务器不是至少要创建2000个线程,或许这2000个线程并没有并发运行,其中有些是挂起的 有些是运行的? 关于这个问题 已经困扰了我太久了,万望众大神,各抒己见,慷慨相助,畅所欲言。
SpringBoot集成Socket 连接
web 能从前端拿到数据 从写好的<em>Socket</em>服务端发送数据 出去 我不知道怎么把这个 从输出流 发送给Client 有大神能帮我看看吗? 下面是开了两个线程 一个来保持TCP<em>连接</em> 一个是 进行输入输出的线程 ![图片说明](https://img-ask.csdn.net/upload/201711/28/1511838366_194077.png)![图片说明](https://img-ask.csdn.net/upload/201711/28/1511838428_419075.png)
Java Socket 原理及生命周期
websocket<em>长</em><em>连接</em>问题
java Socket完美实例。。。
<em>java</em> <em>Socket</em>完美实例。。。(转) 转 http://hi.baidu.com/bieluanchi/blog/item/6991f01daa193efbe0fe0ba4.html <em>java</em> socekt 同步套节字编程主要用到<em>java</em>.net.<em>Socket</em>类,通常情况下我们需要socket的<em>长</em><em>连接</em>模式。其次就是在<em>连接</em>的另一端断开之后需要及时响应。 对于<em>连接</em>的判断,soc...
经典java socket 连接实例
public class CalibrationTimeServer {  Server<em>Socket</em>Channel ssc;  public void start(int port)  {   try   {    Selector selector = Selector.open();    Server<em>Socket</em>Channel ssc = Server<em>Socket</em>Channel
Java实现的TCP连接服务
TCP<em>长</em><em>连接</em>服务的Java实现梁应宏引言TCP<em>长</em><em>连接</em>服务在传统的智能网应用中扮演着重要的角色。由于其传输的高效率,在智能网SCP和IP的各个模块之间,大量使用了这种服务。例如,SS7gateway与SCF、SCF与INES、INES与外部节点、CN与VN,等等。相反,在各种WEB应用中,广泛使用TCP短<em>连接</em>服务。基于HTTP承载的各种应用协议,如HTML,XML,SOAP等,多数使
基于java实现tcp链接,自定义消息协议
哈啰出行(哈啰单车),诚招高级/资深前端开发工程师、Java高级/资深开发工程师,地点上海。 有想法的请发简历到我个人邮箱:huangcheng@hellobike.com   现在即时<em>通信</em>在移动领域应用的非常广了,通过TCP<em>长</em>链接实现数据的即时更新,通知,在日常开发中常会用的。今天我就把在在平常开发中的基本实现思路跟大家一起交流下。转载请注明出处:http://blog.csdn.net/m...
java连接转短连接
我们经常看到短信和微博中用到短链接,短链接的主要职责就是把原始链接很<em>长</em>的地址压缩成只有6 个字母的短链接地址, 当点击这6 个字母的链接后,又可以跳转到原始链接地址。 转换原理: 并不是采用压缩算法(如gzip)url的方法,越压缩<em>长</em>度越<em>长</em>。 可以用MD5 算法对原始链接进行加密(这里使用的MD5 加密后的字符串<em>长</em>度为32 位),然后对加密后的字符串进行处理以得到短链接的地
Java+Spring连接实现后台主动发送数据给前端
1.什么是<em>长</em><em>连接</em>、短<em>连接</em>?在HTTP/1.0中,默认使用的是短<em>连接</em>。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次<em>连接</em>,但任务结束就中断<em>连接</em>。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。但从 HTTP/1.1起,默认使用<em>长</em><em>连接</em>,用以保持<em>连接</em>
应用servlet实现http的连接
为了实现服务端向客户端推送的模式,如果自己写的socket到时顺理成章的很容易实现。但是,甲方要我们用标准的http协议。当然,自己写http服务器倒是也没什么题,我开始也时这么想的,而且都设计好了分布计算和负载平衡的方式。但有人暂时还建议我们用中间件,他们的意见就像天气的脸,一会儿这样,一会儿那样。于是在这方面考虑,无奈和喜悦同时而生。无奈的是,直接应用中间件,成就感将大打折扣。喜悦的是,直接应...
基于Apache Mina实现的TCP连接和短连接实例
1、前言 Apache MINA是Apache组织的一个优秀的项目。MINA是Multipurpose Infrastructure for NetworkApplications的缩写。它是一个网络应用程序框架,用来帮助用户非常方便地开发高性能和高可靠性的网络应用程序。在本文中介绍了如何通过Apache Mina2.0来实现TCP协议<em>长</em><em>连接</em>和短<em>连接</em>应用。 2、系统介绍 2.1系统框架 整...
Java Socket 连接实例
自己写的<em>java</em> <em>长</em><em>连接</em>的<em>Socket</em>代码,供参考
JAVA网络编程Socket常见问题 【连接专题】
http://www.cnblogs.com/hailiang/archive/2011/11/24/2261087.html
JAVA SOCKET 多客户端 连接
请教大家一个问题,不用线程就用Java自带的类,或者方法,能否实现,多个客户端<em>连接</em>一个服务端。同时发送数据。
socket连接客户端管理
今天看到有人在ask上提问关于socket<em>长</em><em>连接</em>发送消息的问题,所以突然就想着写一篇博客。为刚接触socket<em>长</em><em>连接</em>开发,并且没有用mina或netty这种nio框架的开发者提出的一些思路。可以根据自己的业务进行改变。下面就是具体代码(只有对<em>连接</em>的管理,具体的<em>连接</em>没有提供):package littlehow.socket; import <em>java</em>.io.IOException; import ...
基于Socket的TCP连接(服务端Java+客户端Android),Service配合AIDL实现
最近公司的项目要求加入消息推送功能,由于项目用户量不是很大,推送需求不是很严格,而且是基于内网的推送,所以我舍弃了使用三方的推送服务,自己使用<em>Socket</em>写了推送功能,剪出一个小Demo来跟大家分享一下,有不足之处希望读者能够多多给出建议。 关于<em>Socket</em>的TCP和UDP协议,相信大家都是很清楚的,当然做<em>长</em><em>连接</em>两者都是可以的,据说QQ和微信360等使用的UDP做的,使用两个Service相互监控
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
Java学习的正确打开方式
在博主认为,对于入门级学习<em>java</em>的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门<em>java</em>保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成<em>长</em>为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很<em>长</em>,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
Visual C++ 6.0数据库开发实例详解下载
《Visual C++ 6.0数据库开发实例详解》很基础的一本书,不过有不少亮点,本书高清! 相关下载链接:[url=//download.csdn.net/download/yuzhiming871123/3142550?utm_source=bbsseo]//download.csdn.net/download/yuzhiming871123/3142550?utm_source=bbsseo[/url]
PHP开发技术下载
这是本校老师为我们上课内容发给我们的学习文档,是关于PHP开发的学习文档。 相关下载链接:[url=//download.csdn.net/download/dss0225/10376507?utm_source=bbsseo]//download.csdn.net/download/dss0225/10376507?utm_source=bbsseo[/url]
C#3.0新语法总结下载
C#3.0中自动属性,新的对象初始化器,新的集合初始化器,扩展方法,推断类型等属性的总节。 相关下载链接:[url=//download.csdn.net/download/woshixiaomaque/1756818?utm_source=bbsseo]//download.csdn.net/download/woshixiaomaque/1756818?utm_source=bbsseo[/url]
相关热词 c#委托 逆变与协变 c#新建一个项目 c#获取dll文件路径 c#子窗体调用主窗体事件 c# 拷贝目录 c# 调用cef 网页填表c#源代码 c#部署端口监听项目、 c#接口中的属性使用方法 c# 昨天
我们是很有底线的