用Java向IPMSG发送消息

飞鸽传书(IP Messenger,简为IPMsg)是一个小巧方便的即时通信软件,它适合用于局域网内甚至广域网间进行实时通信和文档共享。特别是在局域网内传送文件/文件夹的速度非常快!

  • IPMsg 是一款局域网内即时通信软件, 基于 TCP/IP(UDP).
  • 可运行于多种操作平台(Win/Mac/UNIX/Java), 并实现跨平台信息交流.
  • 不需要服务器支持.
  • 支持文件/文件夹的传送 (2.00版以上)
  • 通讯数据采用 RSA/Blofish 加密 (2.00版以上)
  • 十分小巧, 简单易用, 而且你可以完全免费使用它
  • 目前已有的版本包括: Win32, Win16, MacOS, MacOSX, X11, GTK, GNOME,Java 等, 并且公开源代码。

本文演示了如何使用Java的net包,向IPMSG客户端发送消息。

IPMSG Command 常量定义如下:

 1 /*========== Constant Value ==========*/
 2 public static final long IPMSG_COMMASK = 0x000000ff;
 3 public static final long IPMSG_OPTMASK = 0xffffff00;
 4 public static final long IPMSG_NOOPERATION = 0x00000000;
 5 public static final long IPMSG_BR_ENTRY = 0x00000001;
 6 public static final long IPMSG_BR_EXIT = 0x00000002;
 7 public static final long IPMSG_ANSENTRY = 0x00000003;
 8 public static final long IPMSG_BR_ABSENCE = 0x00000004;
 9 
10  
11 
12 public static final long IPMSG_BR_ISGETLIST = 0x00000018;
13 public static final long IPMSG_OKGETLIST = 0x00000015;
14 public static final long IPMSG_GETLIST = 0x00000016;
15 public static final long IPMSG_ANSLIST = 0x00000017;
16 
17 public static final long IPMSG_SENDMSG = 0x00000020;
18 public static final long IPMSG_RECVMSG = 0x00000021;
19 
20 public static final long IPMSG_READMSG = 0x00000030;
21 public static final long IPMSG_DELMSG = 0x00000031;
22 
23 public static final long IPMSG_GETINFO = 0x00000040;
24 public static final long IPMSG_SENDINFO = 0x00000041;
25 
26 // other opt
27 public static final long IPMSG_ABSENCEOPT = 0x00000100;
28 public static final long IPMSG_SERVEROPT = 0x00000200;
29 public static final long IPMSG_DIALUPOPT = 0x00010000;
30 
31 // send opt
32 public static final long IPMSG_SENDCHECKOPT = 0x00000100;
33 public static final long IPMSG_SECRETOPT = 0x00000200;
34 public static final long IPMSG_BROADCASTOPT = 0x00000400;
35 public static final long IPMSG_MULTICASTOPT = 0x00000800;
36 public static final long IPMSG_NOPOPUPOPT = 0x00001000;
37 public static final long IPMSG_AUTORETOPT = 0x00002000;
38 public static final long IPMSG_RETRYOPT = 0x00004000;
39 public static final long IPMSG_PASSWORDOPT = 0x00008000;
40 public static final long IPMSG_NOLOGOPT = 0x00020000;
41 public static final long IPMSG_NEWMUTIOPT = 0x00040000;
42 
43 public static final int MAXBUF = 8192;
44 /*========== end ==========*/

IPMSG收发数据包的格式(一行):

1 version(IPMSG版本):no(消息编号,可以用系统时间):user(发送消息的用户名):host(发送消息的主机名):command(上述 Command 常量,可以用 | 组合多个值):msg(消息内容)

示例(向IPMSG发送消息,需要先打开对方的IPMSG):

 1 import java.io.IOException;
 2 import java.net.DatagramPacket;
 3 import java.net.DatagramSocket;
 4 import java.net.InetAddress;
 5 import java.net.SocketException;
 6 import java.net.UnknownHostException;
 7 import java.util.Date;
 8 
 9 /**
10  * @author 乱 7 8 糟 http://www.fadesky.com
11  */
12 public class TestIPMSG
13 {
14   public static void main(String[] args)
15   {
16     DatagramSocket socket;
17     InetAddress address;
18 
19     long IPMSG_SENDMSG = 0x00000020;
20 
21     String SENDER = "乱 7 8 糟";
22     String HOST = "Localhost";
23     String MSG_CONTENT = "Hello World!";
24 
25     try
26     {
27       socket = new DatagramSocket();
28       address = InetAddress.getByName("192.168.1.20");// 发送给消息的地址
29 
30       /**
31        * IPMSG收发数据包的格式(一行):
32        * 
33        * version(IPMSG版本):no(消息编号,可以用系统时间):user(发送消息的用户名):
34        * host(发送消息的主机名):command(上述 Command 常量,可以用 | 组合多个值):
35        * msg(消息内容)
36        * 
37        */
38       byte[] buffer = ("1:" + new Date().getTime() + ":" + SENDER + ":" + HOST
39           + ":" + IPMSG_SENDMSG + ":" + MSG_CONTENT).getBytes();
40 
41       DatagramPacket packet = new DatagramPacket(buffer, buffer.length,
42           address, 2425);
43       socket.send(packet); // 发送报文
44 
45       packet = new DatagramPacket(buffer, buffer.length);
46       socket.receive(packet);// 接收回应
47 
48       String message = new String(packet.getData()); // 得到报文信息
49 
50       System.out.println(message); // 显示对方返回的信息
51     }
52     catch (UnknownHostException e)
53     {
54       e.printStackTrace();
55     }
56     catch (SocketException e)
57     {
58       e.printStackTrace();
59     }
60 
61     catch (IOException e)
62     {
63       e.printStackTrace();
64     }
65 
66   }
67 
68 }
69 

你可以在 SourceForge 找到开源的 IP MSG for Java

时间: 2024-12-01 11:17:43

用Java向IPMSG发送消息的相关文章

java微信企业号开发之发送消息(文本、图片、语音)_java

上篇文章介绍了开启回调模式,开始回调模式后我们就要实现聊天功能了.平时使用微信聊天可以发送文本消息.语音.图片.视频等,这里只实现了其中的一些功能和大家分享.  一.与微信企业号建立连接1.企业应用调用企业号提供的接口,管理或查询企业号后台所管理的资源.或给成员发送消息等,以下称主动调用模式. 2.企业号把用户发送的消息或用户触发的事件推送给企业应用,由企业应用处理,以下称回调模式. 3.用户在微信中阅读企业应用下发的H5页面,该页面可以调用微信提供的原生接口,使用微信开放的终端能力,以下称JS

电脑发送消息给手机的方法

问题描述 电脑发送消息给手机的方法 有哪些电脑发送消息给手机并且可以编程实现的方法?可以调用第三方库,发邮件,短信还是啥? 解决方案 这个功能现在不需要了,我知道是某种协议,就是问那种协议呢.? 解决方案二: 电脑发送消息给手机 1.前题电脑作业为服务器,手机作为客户端2.二者都运行3.通过某协议二者之间传输数据. 解决方案三: java 向手机发送消息模拟按键发送消息

java实现微信图文消息的发送

上面已经实现了消息的接收和发送,下面开始整个图文消息.这个才是大头吧,毕竟公众号还是得靠点图才能留住观众.hey~左边的观众.hey~右边的观众.可惜菜鸟的博文没有观众.还是给大家贴下柳峰老师的博文吧,毕竟又是参照他的做的.博文连接贴到最下面了.哈哈,想打我吗?! 其实,看完柳峰老师的博客,应该就感觉到很简单了吧,哈哈,又想打我是吗?! 首先先看下微信开发文档中图文消息中必备的属性都有啥. 参数 是否必须 说明 ToUserName 是 接收方帐号(收到的OpenID) FromUserName

JAVA即时通信系统,实现多客户端,好友管理发送消息和语音

问题描述 JAVA即时通信系统,实现多客户端,好友管理发送消息和语音 JAVA即使通信,C/S模式,可以实现群聊,好友的添加删除,发送消息和语音,发送语音这块一点都不懂.有没有朋友给点资料或者DEMO 解决方案 你所要解决的问题范围太大,一个人不可能帮你答完全,多个人的回答又各有个的思路 你最好的方法是去找一本相关的书籍,即时通信 这个会从实例解析的 解决方案二: 语音就是音频数据流,可能要经过压缩和解压缩,要选择合适的格式,选择一些开源的库吧. 解决方案三: java的多线程编程,建立客户和服

java web-javaweb写在线聊天网页怎么实现向对方发送消息后,对方自动更新显示消息

问题描述 javaweb写在线聊天网页怎么实现向对方发送消息后,对方自动更新显示消息 我用js里面的setInterval(function,time)不断执行function函数来获取最新的消息可以完成,但这样会不断地发送请求. 所以想问,这种类型的网站怎么实现? 解决方案 第一种方案:用HTML5,资料 HTML,基本所有类型和版本的浏览器度支持了,出了IE6,7,8 第二种方案:用websocket,用http协议建立tcp点对点连接,这样服务端和客户端页面能互相推送消息了, 但是webs

Java网络服务器(Mina架构)往C++网络服务器发送消息,掉1字节,请问是什么原因

问题描述 JAVAServer是以MINA为基础构建的网络通讯消息包现在有这么一个问题:以二进制的形式往C++服务器发送消息.我断点跟踪的情况是将:30-0-0-0-2-3-1-0-0-0-b-0-63-64-79-40-31-32-36-2e-63-6f-6d-18-0-0-0-3-1-5-0-31-30-30-38-39-3-0-63-64-79-4-0-6e-75-6c-6c-1-0-0-0推送到客户端,但是很根据抓包的情况来看,只有30-0-0-0-2-3-1-0-0-0-b-0-63-

java-关于微信定时发送消息的问题

问题描述 关于微信定时发送消息的问题 10C 一群朋友在微信群里面,为了活跃气氛,就想做个机器人之类的,每天不定时的或者定时的在群里面发送一些信息带动话题,不知道这个功能要怎么实现,谁能给点思路~~现在也只懂java,或者给个教程,让我学习一下 解决方案 你这个需求需要调用微信的API进行后台开发,但普通的微信账号微信是没有提供后台开发接口的,只有公众号才支持后台开发,如果你有公众号的话就可以轻松实现,用java的话简单开发只需要一个Servlet,然后填写在微信的开发者后台里,微信会将用户发送

求指导-微信企业号如何发送消息,求大神指教

问题描述 微信企业号如何发送消息,求大神指教 微信企业号如何发送消息,研究了好几天了,还是发送不了信息,求大神指导,最好能提供源码,拜托了, 解决方案 http://mobile.51cto.com/app-show-452153.htmhttp://www.csdn.net/article/a/2014-10-13/15820372 解决方案二: 我搜了两个微信工作平台接口实现的Java版的源码,都是要积分的.这个我看源码了,基本接口功能都有.就是要10个积分.我下载了,如果需要的话,我可以发

Java实现邮件发送遇到的问题_java

发送邮件的代码是我从以前的一个应用上直接拷贝过来的.以前使用的腾讯的邮件服务,程序执行起来没有任何问题.后来修改为微软office365邮件服务后,却遇到了两个问题. 问题一,tls加密设置 异常信息如下: 复制代码 代码如下: Exception in thread "main" com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.57 SMTP; Client was not authenticated to send anonym