java调用ipmsg源代码

转载 2007年09月19日 13:07:00
飞鸽传书(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://blog.csdn.net/comstep
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
 

IPMsg源码阅读笔记(1)

打开下载的源码包,成功的导入VS2013后是一个名字为IPMsg的解决方案,这个解决方案里面有6个项目: --install --IPMsg --libpng --TLib --uninst --zl...
  • yang6696100
  • yang6696100
  • 2015年05月26日 00:55
  • 502

IPMSG---文件接收流程

1 文件接收端在收到文件信息IPMSG_SENDMSG后  首先解析存储文件信息 此函数在TRecvDlg的构造函数中 ShareInfo *DecodeShareMsg(char *buf)...
  • wangpei787636458
  • wangpei787636458
  • 2011年12月06日 22:02
  • 844

IPMSG飞鸽传书——编译源代码的方法

IP Messenger是一款局域网内部聊天、文件传输工具,具有很多优点,如数据通讯不需要建立服务器、直接在两台电脑间通信和数据传输,支持文件及文件目录的传输,安全快捷以及小巧方便等优异特点,因此很多...
  • wangpei787636458
  • wangpei787636458
  • 2011年12月06日 22:08
  • 530

IPMSG飞鸽传书1——编译源代码的方法

IP Messenger是一款局域网内部聊天、文件传输工具,具有很多优点,如数据通讯不需要建立服务器、直接在两台电脑间通信和数据传输,支持文件及文件目录的传输,安全快捷以及小巧方便等优异特点,因此很...
  • dyzhen
  • dyzhen
  • 2011年01月08日 11:24
  • 681

飞鸽传书 IPMSG (JAVA Version) for linux/windows

(陆续更新版本见 http://lemonutzf.spaces.live.com/blog/cns!ABF7C5FC3A1AC14B!372.entry ) 花 了两个星期终于写完了。 还剩下一些...
  • lupeng0527
  • lupeng0527
  • 2010年07月14日 10:03
  • 583

ipmsg 文件发送协议解析

飞鸽传输协议分析: IPmsg UDP数据包格式:         1程序版本号         2数据包序列号         3用户名         4主机名         5命令...
  • ff313976
  • ff313976
  • 2012年06月21日 17:43
  • 1062

在Linux(Ubuntu)下使用飞鸽传输(ipmsg)

GNOME2 版のIP Messengerです。
  • lyonte
  • lyonte
  • 2011年05月14日 14:10
  • 2139

分析IPMSG源代码

WinMain与main WinMain的原型: int CALLBACK WinMain( __in HINSTANCE hInstance, __in HINSTANC...
  • razorluo
  • razorluo
  • 2013年01月03日 14:20
  • 1550

IPMSG中的多语言支持

    05年开始用Eclipse的时候,才知道Eclipse(Java)的国际化编程是这样的:每个字符串都有一个固定的ID,在不同的语言包里,这个ID对应不同的字符串。程序运行时,它会根据当前的操作...
  • ZiJinShi
  • ZiJinShi
  • 2007年09月03日 11:48
  • 1976

飞鸽传书源码分析三-网络

简单分析飞鸽传书如何对网络进行编程。
  • mxway
  • mxway
  • 2015年03月11日 12:15
  • 2372
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java调用ipmsg源代码
举报原因:
原因补充:

(最多只允许输入30个字)