java socket技术 客户端实现不发送请求给服务端但是一直接收服务端发来的数据

服务端使用的是C语言做的,与客户端连通后服务端一直主动推送数据给客户端,客户端使用Java技术实现一直接收数据,该怎么去做?... 服务端使用的是C语言做的,与客户端连通后服务端一直主动推送数据给客户端,客户端使用Java技术实现一直接收数据,该怎么去做? 展开
 我来答
曾经有个怪叔叔
2015-04-07 · TA获得超过534个赞
知道小有建树答主
回答量:369
采纳率:100%
帮助的人:362万
展开全部
说点泼冷水的话题
首先确认什么是客户端,什么是服务端。
从用户的角度,可见的、可操作的即是客户端,也就是你这里说的java开发的部分。而不可见的部分就是服务端,也就是你说的C部分。
而从网络开发的角度,发起请求的是客户端,而接收请求的是服务端。这与用户感受有很大区别。
当从java请求C的时候,java是客户端,C 是服务端。而当C主动请求时,则C就变成了客户端,而java 变成了服务端。
所以,从网络开发的角度,java想成为此次通信的服务端,必须长期维护一个端口可用,而C 要访问这个端口。
而java为了能够长期维护一个端口,一般采用socket 方式(其他方式也基本上都是基于socket的),由于java已经封装的很好了,只要new Socket(IP,port) 就可以 获得,同时,由于原来C 是服务器,而如果没有多个服务器同时向java端发送请求的话,基本连线程处理都不需要做的。
anglewang98
推荐于2017-12-15 · TA获得超过535个赞
知道小有建树答主
回答量:420
采纳率:80%
帮助的人:284万
展开全部
  1. java 可以用apache mina实现Socket客户端。C语言的Socket server网上应该也有很多源码。

  2. 看你的描述,应该类似保持长连接推送计算。

简单描述是:

a 客户端请求服务器端,请求订阅某个推送主题,

b 服务器端给此连接编号,并将该连接保持(使用定期发送心跳报文的方式),将编号与连接保存在内存中。

c 当服务器需要推送消息给客户端时,轮询保持的连接列表,逐一发送消息给客户端。

以下是相关介绍链接:

http://blog.csdn.net/ouyhong123/article/details/39395651


一般做推送服务,对服务器的内存要求比较高,现在流行使用Erlang或Go语言写服务器端。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2018-03-20
展开全部
监听你系统通信所用的端口,有数据就获取显示就可以了。例如你的服务器ip是168.12.1.16,使用的是2000端口号,Socket socket=new Socket("168.12.1.16",2000);
DataOutputStream in=new DataOutputStream(socket.getInputStream());
追问
是采用定时去读取信息吗?不发送请求给服务端 服务端会主动把数据推送过来吗?
追答
当然也算是定时读取的一种特殊形式,但是并不需要你自己去实现。他会监听指定的通信端口,当服务器端有数据发送过来是,就能触发相应的事件,自己就可以获取到信息。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不出腹肌不改网名2M
2015-04-07 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:79
采纳率:0%
帮助的人:73.9万
展开全部
java 你不要关闭socket就好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式