你是指Socket连接建立前还是建立后?
如果是建立前,那么
1.你要保证客户端IP地址是公网可见地址。
2.如果存在NAT转发等中间层,你要保证客户端正确设置了端口映射能够从外网访问,或者你牛逼自己做NAT穿透。
3.客户端没有其他妨碍连接的东西,比如防火墙屏蔽端口是绝对行不通的。
4.满足以上条件,客户端开启一个ServerSocket来监听请求,服务器端开启一个Socket去连接客户端不就行了?如果是建立后,那直接发送不就行了,所以你应该问的不是这种。。
如果是建立前,那么
1.你要保证客户端IP地址是公网可见地址。
2.如果存在NAT转发等中间层,你要保证客户端正确设置了端口映射能够从外网访问,或者你牛逼自己做NAT穿透。
3.客户端没有其他妨碍连接的东西,比如防火墙屏蔽端口是绝对行不通的。
4.满足以上条件,客户端开启一个ServerSocket来监听请求,服务器端开启一个Socket去连接客户端不就行了?如果是建立后,那直接发送不就行了,所以你应该问的不是这种。。
解决方案 »
- spring queryforlist 固定的sql语句(SQL语句固定不变,如何用queryforlist,还是用别的方法???)
- 一个FastM的入门问题
- hibernate 非主键的关联 HQL查询取到的对象中的对象属性为空 求解
- Java好学吗?
- 100分求一个eclipse(lomboz)+jboss+j2sdk1.4.2_x开发的jsp程序(jsp文件可以发布到jboss)
- struts的plug-in只能加载一个类的问题
- 要找工作了,谁有公司的面试题?想参考下!
- 用jbuilder8向导做的CMP,在weblogic7.0中部署成功,但客户端出错?
- 用Java代码编写qq邮箱中的邮件删除后显示到回收站
- Java 关于webservice的问题
- 请问下mysql里面char型主键自增的问题!
- 使用struts2的防止重复提交遇到一个小麻烦!
自己写code的思路就是上面说的,客户端当作socket接收端。
我想你可以search下MINA,网络编程很棒的支持。
如果没有这功能,又不让改客户端,这就没辙了,要提需求了吧。有的,因为服务器这边要判断客户端在线,所以客户端要不断向我这发信息,类似心跳,另外客户端还可以主动向服务器主动报警
大概懂你的意思了:客户端是可以接受服务端信息。现在的难题是想指定ip地址的客户端发消息是吧?
可以调用Socket的getInetAddress获取当前通信的客户端ip,进行过滤、判断,符合条件的ip再发消息。
那客户端代码能修改吗?能改的话,你把心跳这段改成取数据吧,服务端保存一个Map<List<Command>> 列表。
如果客户端完全不可控,还没有被调接口,那没有办法了
那客户端代码能修改吗?能改的话,你把心跳这段改成取数据吧,服务端保存一个Map<List<Command>> 列表。
如果客户端完全不可控,还没有被调接口,那没有办法了这里的客户端不是那个移动终端,这里的客户端其实是一个检测硬件的一个软件,我这里说的客户端是为了好表达那个意思,我这边和这个检测软件只能用socket进行通信,它返回给我一条数据帧,然后我来处理,然后把处理后的数据用推送的方式发给移动终端
如果没有这功能,又不让改客户端,这就没辙了,要提需求了吧。有的,因为服务器这边要判断客户端在线,所以客户端要不断向我这发信息,类似心跳,另外客户端还可以主动向服务器主动报警
大概懂你的意思了:客户端是可以接受服务端信息。现在的难题是想指定ip地址的客户端发消息是吧?
可以调用Socket的getInetAddress获取当前通信的客户端ip,进行过滤、判断,符合条件的ip再发消息。对,就是这个问题,原谅我表达不清楚但是客户端很多的,要是过滤判断等处理,那服务器不得慢死啊。
前者最好保存Ip@port 或者客户端的唯一编码~
后者可以是一个socket也可以是一个包含了socket以及兼带上下文等的对象~
这个看你的需求了~