java socket技术 客户端实现不发送请求给服务端但是一直接收服务端发来的数据
服务端使用的是C语言做的,与客户端连通后服务端一直主动推送数据给客户端,客户端使用Java技术实现一直接收数据,该怎么去做?...
服务端使用的是C语言做的,与客户端连通后服务端一直主动推送数据给客户端,客户端使用Java技术实现一直接收数据,该怎么去做?
展开
4个回答
展开全部
说点泼冷水的话题
首先确认什么是客户端,什么是服务端。
从用户的角度,可见的、可操作的即是客户端,也就是你这里说的java开发的部分。而不可见的部分就是服务端,也就是你说的C部分。
而从网络开发的角度,发起请求的是客户端,而接收请求的是服务端。这与用户感受有很大区别。
当从java请求C的时候,java是客户端,C 是服务端。而当C主动请求时,则C就变成了客户端,而java 变成了服务端。
所以,从网络开发的角度,java想成为此次通信的服务端,必须长期维护一个端口可用,而C 要访问这个端口。
而java为了能够长期维护一个端口,一般采用socket 方式(其他方式也基本上都是基于socket的),由于java已经封装的很好了,只要new Socket(IP,port) 就可以 获得,同时,由于原来C 是服务器,而如果没有多个服务器同时向java端发送请求的话,基本连线程处理都不需要做的。
首先确认什么是客户端,什么是服务端。
从用户的角度,可见的、可操作的即是客户端,也就是你这里说的java开发的部分。而不可见的部分就是服务端,也就是你说的C部分。
而从网络开发的角度,发起请求的是客户端,而接收请求的是服务端。这与用户感受有很大区别。
当从java请求C的时候,java是客户端,C 是服务端。而当C主动请求时,则C就变成了客户端,而java 变成了服务端。
所以,从网络开发的角度,java想成为此次通信的服务端,必须长期维护一个端口可用,而C 要访问这个端口。
而java为了能够长期维护一个端口,一般采用socket 方式(其他方式也基本上都是基于socket的),由于java已经封装的很好了,只要new Socket(IP,port) 就可以 获得,同时,由于原来C 是服务器,而如果没有多个服务器同时向java端发送请求的话,基本连线程处理都不需要做的。
展开全部
java 可以用apache mina实现Socket客户端。C语言的Socket server网上应该也有很多源码。
看你的描述,应该类似保持长连接推送计算。
简单描述是:
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());
DataOutputStream in=new DataOutputStream(socket.getInputStream());
追问
是采用定时去读取信息吗?不发送请求给服务端 服务端会主动把数据推送过来吗?
追答
当然也算是定时读取的一种特殊形式,但是并不需要你自己去实现。他会监听指定的通信端口,当服务器端有数据发送过来是,就能触发相应的事件,自己就可以获取到信息。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java 你不要关闭socket就好了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询