# re: 用Java向IPMSG发送消息

hehe but No File Packages Defined on sourceforge.

IP MSG程序效率写的很高

曲强 Nicky 评论于 2007-05-31 18:51  回复  更多评论

# re: 用Java向IPMSG发送消息[未登录]

@曲强 Nicky

可以从CVS下载到。

乱78糟 评论于 2007-05-31 22:20  回复  更多评论

# re: 用Java向IPMSG发送消息

给个下载地址 下了一个没有runtime.properties。。。

Sun 评论于 2007-06-01 10:15  回复  更多评论

# re: 用Java向IPMSG发送消息

@Sun

在Eclipse里新建CVS项目:

CVS地址:

:pserver:anonymous@ipmsg.cvs.sourceforge.net:/cvsroot/ipmsg

我已经打包,添加了下载地址。

乱78糟 评论于 2007-06-01 10:45  回复  更多评论

# re: 用Java向IPMSG发送消息

你能运行起来么?ipmsg.util.IPMPref是不是要一个runtime.properties。。。

Sun 评论于 2007-06-01 14:19  回复  更多评论

# re: 用Java向IPMSG发送消息

cvs的项目版本太老,而且应该叫聊天工具

曲强 Nicky 评论于 2007-06-01 15:35  回复  更多评论

# re: 用Java向IPMSG发送消息

@Sun

可以运行。

至于runtime.properties,在ipmsg.util.IPMPref中,如下:

private static final String HOME_PREF_FILE = ".ipmsg";
...
P_FILE = "runtime.properties";
...
try{
if(new Boolean(pref.getProperty("useHomePrefFile")).booleanValue() &&
(s = System.getProperty("user.home")) != null &&
!s.equals("")){
P_FILE = s + System.getProperty("file.separator") + HOME_PREF_FILE;
}
} catch (MissingResourceException ex) {
ex.printStackTrace();
}

直接在根路径下编译:javac *.java

运行:java Main

就可以了。

不过,界面有一部分乱码,这是因为日文的缘故。

你可以修改:ipmsg\util\Cp932.java

运行后,会在C:\Document and Setting\用户名 目录下生成一个.ipmsg的文件。这就是配置文件。

tripper 评论于 2007-06-01 16:47  回复  更多评论

# re: 用Java向IPMSG发送消息

对接受消息的ipmsg版本有限制么?不是java实现的IPMSG可以收到这种方式发送的消息么?

zhengbowen 评论于 2007-06-01 16:48  回复  更多评论

# re: 用Java向IPMSG发送消息

@曲强 Nicky

这个Java的版本是比较老了,运行效率也不咋地。

tripper 评论于 2007-06-01 16:50  回复  更多评论

# re: 用Java向IPMSG发送消息

@zhengbowen

Windows平台的IPMSG可以收到Java版的IPMSG发送的消息,因为它们发送和接受数据包的格式是一样的。

不过,我只在 IPMSG 2.06 Winows XP SP2平台做过测试。

其他版本没试过。

tripper 评论于 2007-06-01 16:55  回复  更多评论

# re: 用Java向IPMSG发送消息

@tripper

压根就没找到在哪有这个runtime.properties。。。

这个应该不是自己生成的吧

你那有?

发一个出来吧

Sun 评论于 2007-06-01 18:24  回复  更多评论

# re: 用Java向IPMSG发送消息

@Sun

正常情况下是不会产生这个文件。

请注意下面几句:

...
P_FILE = "runtime.properties";
...
try
...
//s= "C:\Document and Setting\用户名"
s = System.getProperty("user.home")
...
//P_FILE = "C:\Document and Setting\用户名\.ipmsg"
P_FILE = s + System.getProperty("file.separator") + HOME_PREF_FILE;
...
catch(...)
...

正常情况下, P_FILE,也就是配置文件的路径在try块中改成了:

"C:\Document and Setting\用户名\.ipmsg"

如果出现了异常,才使用P_FILE原来的值:"runtime.properties"

tripper 评论于 2007-06-01 18:39  回复  更多评论

# re: 用Java向IPMSG发送消息

帅哥 给个联系方式吧 我现在还没搞明白这个配置文件怎么回事。。。

就算是改成C:\Document and Setting\用户名\.ipmsg

也得有这个文件是不

Sun 评论于 2007-06-02 09:43  回复  更多评论

# re: 用Java向IPMSG发送消息

@Sun

tripper 评论于 2007-06-02 10:26  回复  更多评论

# 技术成长的过程

MyName 评论于 2007-06-02 13:42  回复  更多评论

# re: 用Java向IPMSG发送消息

@tripper

我只用上面的发送消息的示例代码发送消息后接受的IPmsg(2.06版)没有任何反映,环境是window2003+jdk1.4.2,接受方为自己或相同环境的另一台机器都没有反映。用java版的IPMSG发送消息其他机器的win版可以正常收到。是不是上面的示例代码需要加上握手过程啊?

zhengbowen 评论于 2007-06-04 09:22  回复  更多评论

# re: 用Java向IPMSG发送消息

@zhengbowen

看看是代码执行完了没有反应,还是一直没有执行完?

tripper 评论于 2007-06-04 09:36  回复  更多评论

# re: 用Java向IPMSG发送消息

@tripper

代码执行完了,执行到

socket.receive(packet);// 接收回应

时会被阻塞,但发送消息的过程已经完成了,将该句注释掉后程序能从头到尾执行完而且没有报错。

zhengbowen 评论于 2007-06-04 10:43  回复  更多评论

# re: 用Java向IPMSG发送消息

@zhengbowen

>将该句注释掉后程序能从头到尾执行完而且没有报错

那么IPMSG可以接收到消息吗?

乱78糟 评论于 2007-06-04 13:49  回复  更多评论

# re: 用Java向IPMSG发送消息

@乱78糟

>那么IPMSG可以接收到消息吗?

收不到!

zhengbowen 评论于 2007-06-04 15:03  回复  更多评论

# re: 用Java向IPMSG发送消息

单独写一个消息的监听是可以收到的:

DatagramSocket ds = new DatagramSocket(2425);
byte [] buf=new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
ds.receive(dp);
System.out.println(new String(dp.getData(),0,dp.getLength())+" from "+dp.getAddress().getHostAddress()+":"+dp.getPort());

所有怀疑是发送消息的格式问题或是需要先完成“握手”后才能用上面的TestIPMSG来发送消息。请问有人直接用上面的TestIPMSG成功将消息发给其他版本IPMsg的么?

zhengbowen 评论于 2007-06-04 15:11  回复  更多评论

# re: 用Java向IPMSG发送消息

@zhengbowen
byte[] buffer = ("1:" + new Date().getTime() + ":" + SENDER + ":" + HOST
39 + ":" + IPMSG_SENDMSG + ":" + MSG_CONTENT).getBytes();

你把buffer的值打出来,看看是不是数据格式错误(比如不应该出现 : 的地方写了 : 号)。

tripper 评论于 2007-06-04 15:13  回复  更多评论

# re: 用Java向IPMSG发送消息

代码是:

String msg="1:"+new Date().getTime()+":"+SENDER+":"+HOST+":"+IPMSG_SENDMSG+":"+MSG_CONTENT;
byte[] buffer =msg.getBytes();
System.out.println("msg="+msg);
System.out.println("buffer="+buffer);

结果是:

msg=1:1180941554265:zhengbowen:AVIDM-ZHENGBW:32:Hello World!
buffer=[B@affc70
1:1180941554265:zhengbowen:AVIDM-ZHENGBW:32:Hello World!

不知道转为字节后前边多出来的是什么?

zhengbowen 评论于 2007-06-04 15:24  回复  更多评论

# re: 用Java向IPMSG发送消息

>不知道转为字节后前边多出来的是什么?

找到原因了 呵呵

转换后的buffer就是:[B@affc70

而最后一行的:1:1180941554265:zhengbowen:AVIDM-ZHENGBW:32:Hello World! 是下面这就话打出来的:

System.out.println(message); // 显示对方返回的信息

zhengbowen 评论于 2007-06-04 15:35  回复  更多评论

# re: 用Java向IPMSG发送消息

发送消息时乱码怎么处理?

xiaojiang 评论于 2007-06-06 10:57  回复  更多评论

# re: 用Java向IPMSG发送消息[未登录]

@xiaojiang

ipmsg.util.Cp932

这个是日文转码用的。

方法toJIS(String s)

和toCp932(String s)其实可以不用。

你可以自己调试一下。

tripper 评论于 2007-06-06 12:23  回复  更多评论

# re: 用Java向IPMSG发送消息

请问Cp932这个类要怎么改才能没有乱码,我不用这个类也会有乱码.