- 浏览: 65636 次
- 性别:
- 来自: 上海
文章分类
最新评论
用JAVA实现MSN Messenger的功能
JML是Java实现即时通讯软件MSN的lib包,目前支持的协议为MSNP8-MSNP15。
JML的官网:http://sourceforge.net/projects/java-jml/
【一】、基本介绍
附件提供测试代码和lib文件:
msn demo代码:my_demo_code.zip
lib包:jml-1.0b4.jar
官方example文件:example.zip
JML的lib还依赖的其他第三方lib包:
cindy.jar
commons-logging.jar
httpcore.jar
第三方lib包下载:第三方lib.zip
【二】、DEMO代码
简单实现了MSN收发消息、好友添加等等基本功能。
MyJmsnClient.java
Java代码
package michael.msn.jml;
import java.util.Scanner;
import net.sf.jml.MsnContact;
import net.sf.jml.MsnMessenger;
import net.sf.jml.MsnProtocol;
import net.sf.jml.MsnUserStatus;
import net.sf.jml.impl.MsnMessengerFactory;
import org.apache.log4j.PropertyConfigurator;
/**
* @author michael
*
*/
public class MyJmsnClient {
private String msnEmail;
private String msnPassword;
private MsnMessenger msn;
/**
* @param msnEmail
* @param msnPassword
*/
public MyJmsnClient(String msnEmail, String msnPassword) {
this.msnEmail = msnEmail;
this.msnPassword = msnPassword;
}
/**
* 启动
*/
public void start() {
// 创建MsnMessenger
msn = MsnMessengerFactory.createMsnMessenger(msnEmail, msnPassword);
// 设置登录协议 MSNP15 可以发送离线消息
msn.setSupportedProtocol(new MsnProtocol[] { MsnProtocol.MSNP15 });
// 设置用户状态
msn.getOwner().setInitStatus(MsnUserStatus.ONLINE);
// 注册事件监听
msn.addListener(new MyJmsnSimpleAdapter());
msn.login();// 登录
}
/**
* msn logout
*/
public void stop() {
msn.logout();
}
/**
* 给所有的人发消息
* @param msg
*/
public void sendAllMsg(String msg) {
MsnContact[] contactList = msn.getContactList().getContacts();
for (MsnContact con : contactList) {
msn.sendText(con.getEmail(), msg);
}
}
/**
* @param args
*/
public static void main(String[] args) {
PropertyConfigurator.configure(MyJmsnClient.class
.getResource("/log4j.properties"));
MyJmsnClient client = new MyJmsnClient("yourmsnemail", "yourpassword");
System.out.println(" MyJmsnClient start ...");
client.start();
try {
Thread.sleep(5000);
} catch (Exception e) {
e.printStackTrace();
}
//获取控制台输入的信息发送给所有的好友
Scanner input = new Scanner(System.in);
while (input.hasNext()) {
String s = input.next();
if ("quit".equals(s)) {
System.out.println(" MSN exit by quit");
client.stop();
break;
} else {
client.sendAllMsg(s);
}
}
System.out.println("=====================");
}
}
MyJmsnSimpleAdapter.java
Java代码
package michael.msn.jml;
import net.sf.jml.MsnContact;
import net.sf.jml.MsnFileTransfer;
import net.sf.jml.MsnList;
import net.sf.jml.MsnMessenger;
import net.sf.jml.MsnSwitchboard;
import net.sf.jml.event.MsnAdapter;
import net.sf.jml.message.MsnControlMessage;
import net.sf.jml.message.MsnEmailInitEmailData;
import net.sf.jml.message.MsnInstantMessage;
import org.apache.log4j.Logger;
/**
* 实现了一个简单的MsnAdapter
* @author michael
*
*/
public class MyJmsnSimpleAdapter extends MsnAdapter {
private static final Logger logger = Logger
.getLogger(MyJmsnSimpleAdapter.class);
/**
* @see net.sf.jml.event.MsnAdapter#contactAddCompleted(net.sf.jml.MsnMessenger,
* net.sf.jml.MsnContact, net.sf.jml.MsnList)
* @param pMessenger
* @param pContact
* @param pList
*/
@Override
public void contactAddCompleted(MsnMessenger pMessenger,
MsnContact pContact, MsnList pList) {
super.contactAddCompleted(pMessenger, pContact, pList);
try {
pMessenger.sendText(pContact.getEmail(), pContact.getFriendlyName()
+ " 你好,已经加为好友");
} catch (Exception e) {
logger.error("contactAddCompleted sendText error", e);
}
}
/**
* @see net.sf.jml.event.MsnAdapter#contactAddedMe(net.sf.jml.MsnMessenger,
* net.sf.jml.MsnContact)
* @param pMessenger
* @param pContact
*/
@Override
public void contactAddedMe(MsnMessenger pMessenger, MsnContact pContact) {
super.contactAddedMe(pMessenger, pContact);
logger.info("user: " + pContact.getEmail() + " Add me.");
try {
pMessenger.addFriend(pContact.getEmail(), pContact
.getFriendlyName());
} catch (Exception e) {
logger.error("addFriend error:", e);
}
}
/**
* @see net.sf.jml.event.MsnAdapter#contactListInitCompleted(net.sf.jml.MsnMessenger)
* @param pMessenger
*/
@Override
public void contactListInitCompleted(MsnMessenger pMessenger) {
super.contactListInitCompleted(pMessenger);
MsnContact[] cons = pMessenger.getContactList().getContactsInList(
MsnList.AL);
logger.info("你的联系人数量=" + cons.length);
for (MsnContact con : cons) {
logger.info("联系人:" + con.getEmail().getEmailAddress() + " 状态:"
+ con.getStatus().getDisplayStatus());
}
}
/**
* @see net.sf.jml.event.MsnAdapter#contactListSyncCompleted(net.sf.jml.MsnMessenger)
* @param pMessenger
*/
@Override
public void contactListSyncCompleted(MsnMessenger pMessenger) {
super.contactListSyncCompleted(pMessenger);
logger.info("MSN contactListSyncCompleted.");
}
/**
* @see net.sf.jml.event.MsnAdapter#contactRemoveCompleted(net.sf.jml.MsnMessenger,
* net.sf.jml.MsnContact, net.sf.jml.MsnList)
* @param pMessenger
* @param pContact
* @param pList
*/
@Override
public void contactRemoveCompleted(MsnMessenger pMessenger,
MsnContact pContact, MsnList pList) {
super.contactRemoveCompleted(pMessenger, pContact, pList);
logger.info("user: " + pContact.getEmail() + " Remove Completed.");
}
/**
* @see net.sf.jml.event.MsnAdapter#contactRemovedMe(net.sf.jml.MsnMessenger,
* net.sf.jml.MsnContact)
* @param pMessenger
* @param pContact
*/
@Override
public void contactRemovedMe(MsnMessenger pMessenger, MsnContact pContact) {
super.contactRemovedMe(pMessenger, pContact);
logger.info("user: " + pContact.getEmail() + " Remove me.");
}
/**
* @see net.sf.jml.event.MsnAdapter#controlMessageReceived(net.sf.jml.MsnSwitchboard,
* net.sf.jml.message.MsnControlMessage, net.sf.jml.MsnContact)
* @param pSwitchboard
* @param pMessage
* @param pContact
*/
@Override
public void controlMessageReceived(MsnSwitchboard pSwitchboard,
MsnControlMessage pMessage, MsnContact pContact) {
super.controlMessageReceived(pSwitchboard, pMessage, pContact);
logger.info(pContact.getFriendlyName() + " 正在输入文字......");
}
/**
* @see net.sf.jml.event.MsnAdapter#exceptionCaught(net.sf.jml.MsnMessenger,
* java.lang.Throwable)
* @param pMessenger
* @param pThrowable
*/
@Override
public void exceptionCaught(MsnMessenger pMessenger, Throwable pThrowable) {
super.exceptionCaught(pMessenger, pThrowable);
logger.error("exceptionCaught :", pThrowable);
}
/**
* @see net.sf.jml.event.MsnAdapter#fileTransferRequestReceived(net.sf.jml.MsnFileTransfer)
* @param pTransfer
*/
@Override
public void fileTransferRequestReceived(MsnFileTransfer pTransfer) {
super.fileTransferRequestReceived(pTransfer);
logger.info("receive fileTransferRequest from "
+ pTransfer.getContact().getDisplayName());
}
/**
* @see net.sf.jml.event.MsnAdapter#initialEmailDataReceived(net.sf.jml.MsnSwitchboard,
* net.sf.jml.message.MsnEmailInitEmailData, net.sf.jml.MsnContact)
* @param pSwitchboard
* @param pMessage
* @param pContact
*/
@Override
public void initialEmailDataReceived(MsnSwitchboard pSwitchboard,
MsnEmailInitEmailData pMessage, MsnContact pContact) {
super.initialEmailDataReceived(pSwitchboard, pMessage, pContact);
logger.info("receive email from " + pContact.getDisplayName());
}
/**
* @see net.sf.jml.event.MsnAdapter#instantMessageReceived(net.sf.jml.MsnSwitchboard,
* net.sf.jml.message.MsnInstantMessage, net.sf.jml.MsnContact)
* @param pSwitchboard
* @param pMessage
* @param pContact
*/
@Override
public void instantMessageReceived(MsnSwitchboard pSwitchboard,
MsnInstantMessage pMessage, MsnContact pContact) {
super.instantMessageReceived(pSwitchboard, pMessage, pContact);
logger.info("received from: " + pContact.getDisplayName()
+ " with msg: " + pMessage.getContent());
try {
MsnInstantMessage msg = new MsnInstantMessage();
msg.setContent("你好!我是机器人Michael,请勿回复消息。"
+ "\r\n你可以访问我的blog http://sjsky.iteye.com");
msg.setFontRGBColor(255);
pSwitchboard.sendMessage(msg);// 发送信息
pSwitchboard.close();// 关闭对话框
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @see net.sf.jml.event.MsnAdapter#loginCompleted(net.sf.jml.MsnMessenger)
* @param pMessenger
*/
@Override
public void loginCompleted(MsnMessenger pMessenger) {
super.loginCompleted(pMessenger);
logger.info("MSN login success with ID="
+ pMessenger.getOwner().getEmail());
}
/**
* @see net.sf.jml.event.MsnAdapter#logout(net.sf.jml.MsnMessenger)
* @param pMessenger
*/
@Override
public void logout(MsnMessenger pMessenger) {
super.logout(pMessenger);
logger.info("MSN logout with ID=" + pMessenger.getOwner().getEmail());
}
/**
* @see net.sf.jml.event.MsnAdapter#offlineMessageReceived(java.lang.String,
* java.lang.String, java.lang.String, net.sf.jml.MsnContact)
* @param pBody
* @param pContentType
* @param pEncoding
* @param pContact
*/
@Override
public void offlineMessageReceived(String pBody, String pContentType,
String pEncoding, MsnContact pContact) {
super.offlineMessageReceived(pBody, pContentType, pEncoding, pContact);
logger.info("receive offline msg from: "
+ pContact.getEmail().getEmailAddress() + " msg:"
+ pContact.getPersonalMessage());
}
/**
* @see net.sf.jml.event.MsnAdapter#ownerDisplayNameChanged(net.sf.jml.MsnMessenger)
* @param pMessenger
*/
@Override
public void ownerDisplayNameChanged(MsnMessenger pMessenger) {
super.ownerDisplayNameChanged(pMessenger);
logger.info("MSN DisplayName : "
+ pMessenger.getOwner().getOldDisplayName() + " -> "
+ pMessenger.getOwner().getDisplayName());
}
/**
* @see net.sf.jml.event.MsnAdapter#ownerStatusChanged(net.sf.jml.MsnMessenger)
* @param pMessenger
*/
@Override
public void ownerStatusChanged(MsnMessenger pMessenger) {
super.ownerStatusChanged(pMessenger);
logger
.info("MSN status :"
+ pMessenger.getOwner().getOldStatus()
.getDisplayStatus() + " -> "
+ pMessenger.getOwner().getStatus().getDisplayStatus());
}
}
-----------------------------------分 ------------------------------------隔 ------------------------------------线 --------------------------------------
jml-1.0b4.jar (315.9 KB)
下载次数: 14
example.zip (11.5 KB)
下载次数: 12
第三方lib.zip (408.3 KB)
下载次数: 21
my_demo_code.zip (2.9 KB)
下载次数: 18
JML的官网:http://sourceforge.net/projects/java-jml/
【一】、基本介绍
附件提供测试代码和lib文件:
msn demo代码:my_demo_code.zip
lib包:jml-1.0b4.jar
官方example文件:example.zip
JML的lib还依赖的其他第三方lib包:
cindy.jar
commons-logging.jar
httpcore.jar
第三方lib包下载:第三方lib.zip
【二】、DEMO代码
简单实现了MSN收发消息、好友添加等等基本功能。
MyJmsnClient.java
Java代码
package michael.msn.jml;
import java.util.Scanner;
import net.sf.jml.MsnContact;
import net.sf.jml.MsnMessenger;
import net.sf.jml.MsnProtocol;
import net.sf.jml.MsnUserStatus;
import net.sf.jml.impl.MsnMessengerFactory;
import org.apache.log4j.PropertyConfigurator;
/**
* @author michael
*
*/
public class MyJmsnClient {
private String msnEmail;
private String msnPassword;
private MsnMessenger msn;
/**
* @param msnEmail
* @param msnPassword
*/
public MyJmsnClient(String msnEmail, String msnPassword) {
this.msnEmail = msnEmail;
this.msnPassword = msnPassword;
}
/**
* 启动
*/
public void start() {
// 创建MsnMessenger
msn = MsnMessengerFactory.createMsnMessenger(msnEmail, msnPassword);
// 设置登录协议 MSNP15 可以发送离线消息
msn.setSupportedProtocol(new MsnProtocol[] { MsnProtocol.MSNP15 });
// 设置用户状态
msn.getOwner().setInitStatus(MsnUserStatus.ONLINE);
// 注册事件监听
msn.addListener(new MyJmsnSimpleAdapter());
msn.login();// 登录
}
/**
* msn logout
*/
public void stop() {
msn.logout();
}
/**
* 给所有的人发消息
* @param msg
*/
public void sendAllMsg(String msg) {
MsnContact[] contactList = msn.getContactList().getContacts();
for (MsnContact con : contactList) {
msn.sendText(con.getEmail(), msg);
}
}
/**
* @param args
*/
public static void main(String[] args) {
PropertyConfigurator.configure(MyJmsnClient.class
.getResource("/log4j.properties"));
MyJmsnClient client = new MyJmsnClient("yourmsnemail", "yourpassword");
System.out.println(" MyJmsnClient start ...");
client.start();
try {
Thread.sleep(5000);
} catch (Exception e) {
e.printStackTrace();
}
//获取控制台输入的信息发送给所有的好友
Scanner input = new Scanner(System.in);
while (input.hasNext()) {
String s = input.next();
if ("quit".equals(s)) {
System.out.println(" MSN exit by quit");
client.stop();
break;
} else {
client.sendAllMsg(s);
}
}
System.out.println("=====================");
}
}
MyJmsnSimpleAdapter.java
Java代码
package michael.msn.jml;
import net.sf.jml.MsnContact;
import net.sf.jml.MsnFileTransfer;
import net.sf.jml.MsnList;
import net.sf.jml.MsnMessenger;
import net.sf.jml.MsnSwitchboard;
import net.sf.jml.event.MsnAdapter;
import net.sf.jml.message.MsnControlMessage;
import net.sf.jml.message.MsnEmailInitEmailData;
import net.sf.jml.message.MsnInstantMessage;
import org.apache.log4j.Logger;
/**
* 实现了一个简单的MsnAdapter
* @author michael
*
*/
public class MyJmsnSimpleAdapter extends MsnAdapter {
private static final Logger logger = Logger
.getLogger(MyJmsnSimpleAdapter.class);
/**
* @see net.sf.jml.event.MsnAdapter#contactAddCompleted(net.sf.jml.MsnMessenger,
* net.sf.jml.MsnContact, net.sf.jml.MsnList)
* @param pMessenger
* @param pContact
* @param pList
*/
@Override
public void contactAddCompleted(MsnMessenger pMessenger,
MsnContact pContact, MsnList pList) {
super.contactAddCompleted(pMessenger, pContact, pList);
try {
pMessenger.sendText(pContact.getEmail(), pContact.getFriendlyName()
+ " 你好,已经加为好友");
} catch (Exception e) {
logger.error("contactAddCompleted sendText error", e);
}
}
/**
* @see net.sf.jml.event.MsnAdapter#contactAddedMe(net.sf.jml.MsnMessenger,
* net.sf.jml.MsnContact)
* @param pMessenger
* @param pContact
*/
@Override
public void contactAddedMe(MsnMessenger pMessenger, MsnContact pContact) {
super.contactAddedMe(pMessenger, pContact);
logger.info("user: " + pContact.getEmail() + " Add me.");
try {
pMessenger.addFriend(pContact.getEmail(), pContact
.getFriendlyName());
} catch (Exception e) {
logger.error("addFriend error:", e);
}
}
/**
* @see net.sf.jml.event.MsnAdapter#contactListInitCompleted(net.sf.jml.MsnMessenger)
* @param pMessenger
*/
@Override
public void contactListInitCompleted(MsnMessenger pMessenger) {
super.contactListInitCompleted(pMessenger);
MsnContact[] cons = pMessenger.getContactList().getContactsInList(
MsnList.AL);
logger.info("你的联系人数量=" + cons.length);
for (MsnContact con : cons) {
logger.info("联系人:" + con.getEmail().getEmailAddress() + " 状态:"
+ con.getStatus().getDisplayStatus());
}
}
/**
* @see net.sf.jml.event.MsnAdapter#contactListSyncCompleted(net.sf.jml.MsnMessenger)
* @param pMessenger
*/
@Override
public void contactListSyncCompleted(MsnMessenger pMessenger) {
super.contactListSyncCompleted(pMessenger);
logger.info("MSN contactListSyncCompleted.");
}
/**
* @see net.sf.jml.event.MsnAdapter#contactRemoveCompleted(net.sf.jml.MsnMessenger,
* net.sf.jml.MsnContact, net.sf.jml.MsnList)
* @param pMessenger
* @param pContact
* @param pList
*/
@Override
public void contactRemoveCompleted(MsnMessenger pMessenger,
MsnContact pContact, MsnList pList) {
super.contactRemoveCompleted(pMessenger, pContact, pList);
logger.info("user: " + pContact.getEmail() + " Remove Completed.");
}
/**
* @see net.sf.jml.event.MsnAdapter#contactRemovedMe(net.sf.jml.MsnMessenger,
* net.sf.jml.MsnContact)
* @param pMessenger
* @param pContact
*/
@Override
public void contactRemovedMe(MsnMessenger pMessenger, MsnContact pContact) {
super.contactRemovedMe(pMessenger, pContact);
logger.info("user: " + pContact.getEmail() + " Remove me.");
}
/**
* @see net.sf.jml.event.MsnAdapter#controlMessageReceived(net.sf.jml.MsnSwitchboard,
* net.sf.jml.message.MsnControlMessage, net.sf.jml.MsnContact)
* @param pSwitchboard
* @param pMessage
* @param pContact
*/
@Override
public void controlMessageReceived(MsnSwitchboard pSwitchboard,
MsnControlMessage pMessage, MsnContact pContact) {
super.controlMessageReceived(pSwitchboard, pMessage, pContact);
logger.info(pContact.getFriendlyName() + " 正在输入文字......");
}
/**
* @see net.sf.jml.event.MsnAdapter#exceptionCaught(net.sf.jml.MsnMessenger,
* java.lang.Throwable)
* @param pMessenger
* @param pThrowable
*/
@Override
public void exceptionCaught(MsnMessenger pMessenger, Throwable pThrowable) {
super.exceptionCaught(pMessenger, pThrowable);
logger.error("exceptionCaught :", pThrowable);
}
/**
* @see net.sf.jml.event.MsnAdapter#fileTransferRequestReceived(net.sf.jml.MsnFileTransfer)
* @param pTransfer
*/
@Override
public void fileTransferRequestReceived(MsnFileTransfer pTransfer) {
super.fileTransferRequestReceived(pTransfer);
logger.info("receive fileTransferRequest from "
+ pTransfer.getContact().getDisplayName());
}
/**
* @see net.sf.jml.event.MsnAdapter#initialEmailDataReceived(net.sf.jml.MsnSwitchboard,
* net.sf.jml.message.MsnEmailInitEmailData, net.sf.jml.MsnContact)
* @param pSwitchboard
* @param pMessage
* @param pContact
*/
@Override
public void initialEmailDataReceived(MsnSwitchboard pSwitchboard,
MsnEmailInitEmailData pMessage, MsnContact pContact) {
super.initialEmailDataReceived(pSwitchboard, pMessage, pContact);
logger.info("receive email from " + pContact.getDisplayName());
}
/**
* @see net.sf.jml.event.MsnAdapter#instantMessageReceived(net.sf.jml.MsnSwitchboard,
* net.sf.jml.message.MsnInstantMessage, net.sf.jml.MsnContact)
* @param pSwitchboard
* @param pMessage
* @param pContact
*/
@Override
public void instantMessageReceived(MsnSwitchboard pSwitchboard,
MsnInstantMessage pMessage, MsnContact pContact) {
super.instantMessageReceived(pSwitchboard, pMessage, pContact);
logger.info("received from: " + pContact.getDisplayName()
+ " with msg: " + pMessage.getContent());
try {
MsnInstantMessage msg = new MsnInstantMessage();
msg.setContent("你好!我是机器人Michael,请勿回复消息。"
+ "\r\n你可以访问我的blog http://sjsky.iteye.com");
msg.setFontRGBColor(255);
pSwitchboard.sendMessage(msg);// 发送信息
pSwitchboard.close();// 关闭对话框
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @see net.sf.jml.event.MsnAdapter#loginCompleted(net.sf.jml.MsnMessenger)
* @param pMessenger
*/
@Override
public void loginCompleted(MsnMessenger pMessenger) {
super.loginCompleted(pMessenger);
logger.info("MSN login success with ID="
+ pMessenger.getOwner().getEmail());
}
/**
* @see net.sf.jml.event.MsnAdapter#logout(net.sf.jml.MsnMessenger)
* @param pMessenger
*/
@Override
public void logout(MsnMessenger pMessenger) {
super.logout(pMessenger);
logger.info("MSN logout with ID=" + pMessenger.getOwner().getEmail());
}
/**
* @see net.sf.jml.event.MsnAdapter#offlineMessageReceived(java.lang.String,
* java.lang.String, java.lang.String, net.sf.jml.MsnContact)
* @param pBody
* @param pContentType
* @param pEncoding
* @param pContact
*/
@Override
public void offlineMessageReceived(String pBody, String pContentType,
String pEncoding, MsnContact pContact) {
super.offlineMessageReceived(pBody, pContentType, pEncoding, pContact);
logger.info("receive offline msg from: "
+ pContact.getEmail().getEmailAddress() + " msg:"
+ pContact.getPersonalMessage());
}
/**
* @see net.sf.jml.event.MsnAdapter#ownerDisplayNameChanged(net.sf.jml.MsnMessenger)
* @param pMessenger
*/
@Override
public void ownerDisplayNameChanged(MsnMessenger pMessenger) {
super.ownerDisplayNameChanged(pMessenger);
logger.info("MSN DisplayName : "
+ pMessenger.getOwner().getOldDisplayName() + " -> "
+ pMessenger.getOwner().getDisplayName());
}
/**
* @see net.sf.jml.event.MsnAdapter#ownerStatusChanged(net.sf.jml.MsnMessenger)
* @param pMessenger
*/
@Override
public void ownerStatusChanged(MsnMessenger pMessenger) {
super.ownerStatusChanged(pMessenger);
logger
.info("MSN status :"
+ pMessenger.getOwner().getOldStatus()
.getDisplayStatus() + " -> "
+ pMessenger.getOwner().getStatus().getDisplayStatus());
}
}
-----------------------------------分 ------------------------------------隔 ------------------------------------线 --------------------------------------
jml-1.0b4.jar (315.9 KB)
下载次数: 14
example.zip (11.5 KB)
下载次数: 12
第三方lib.zip (408.3 KB)
下载次数: 21
my_demo_code.zip (2.9 KB)
下载次数: 18
相关推荐
本文将探讨如何使用Java语言实现MSN Messenger的功能,主要涉及的知识点包括Java编程、即时通讯协议(IM)、JML库以及相关的第三方库。 **JML库介绍** JML(Java Messenger Library)是专为Java开发者设计的一个库...
在本文中,我们将深入探讨如何使用Java来实现MSN(Microsoft Messenger Service)的收发消息功能。MSN曾经是一款流行的即时通讯软件,尽管它现在已经不再维护,但它的协议仍然是学习网络通信和即时消息处理的一个...
MSN Messenger(现已更名为Windows Live Messenger)曾经是流行的即时通讯工具,而Java版MSN项目则是开发者尝试用Java来复现这一功能的成果。通过研究这些源码,我们可以深入理解以下知识点: 1. **Java网络编程**...
Java版的即时通信软件,正如标题所提及的“Java版msn即时通信软件”,是一种基于Java编程语言开发的在线通讯工具,旨在实现类似MSN Messenger的功能。MSN Messenger是微软公司曾经推出的一款广泛使用的即时通讯应用...
在MSN Messenger中,TypeLib定义了各种接口和类,这些接口和类是实现服务功能和交互的关键。例如,它可能包含登录、发送消息、添加联系人等操作的接口定义。通过引用TypeLib,开发者可以轻松地在代码中调用这些接口...
标题中的"MSN.rar_java msn_msn_msn j2_msn mobile"暗示了这是一个关于MSN(微软网络Messenger)的项目,特别关注其在Java平台上,尤其是J2ME(Java 2 Micro Edition)环境下的实现,适合移动设备如手机。...
由于MSN Messenger在2013年已停服,这款Java版的程序可能是一个开源或者非官方的替代品,允许用户通过网络进行文字聊天、语音通话、文件传输等功能。 Java作为一种跨平台的编程语言,使得这个Java版的MSN程序具有...
JavaMSN项目是一个基于Java语言实现的MSN Messenger接口,它允许开发者通过编程方式与MSN网络进行交互,实现诸如发送和接收消息、管理联系人列表、处理在线状态更新等功能。这个项目通常对那些希望在自己的应用程序...
MSN Messenger模仿界面是一个关于创建类似MSN Messenger的用户界面的设计与实现项目。MSN Messenger,作为一款曾经流行的即时通讯软件,以其简洁、直观的界面设计深受用户喜爱。本项目旨在通过编程技术,模仿其核心...
JavaMSN是一款基于Java编程语言开发的网络聊天工具,模仿了微软的MSN Messenger服务。这个项目由一位韩国开发者创建,旨在提供跨平台的即时通讯解决方案,因为Java语言的“一次编写,到处运行”特性使得JavaMSN可以...
【Java版MSN(TjMSN)】是一款基于Java编程语言实现的即时通讯软件,它模仿了经典的MSN Messenger服务,为用户提供跨平台的聊天、文件传输等基本功能。在2009年10月20日时,这款软件已被证实可以正常运行并使用。 ...
2. **网络通信协议**:MSN Messenger使用了专有的实时通信协议,包括MSNP(MSN Messenger Protocol)和WLM(Windows Live Messenger Protocol)。通过分析源码,我们可以学习如何实现这些协议,包括消息传递、状态...
Java模仿的MSN聊天软件是一个基于Java编程语言实现的即时通讯应用,它借鉴了早期流行的MSN Messenger的功能和设计,旨在提供类似的文字、语音甚至视频聊天体验。在这个项目中,开发者使用Java的技术栈来创建一个...
JavaMSN实例是一个基于Java编程语言实现的项目,它展示了如何使用Java来登录MSN即时通讯平台并发送消息。在本文中,我们将深入探讨这个过程中的关键知识点,包括Java网络编程、MSN协议理解、以及如何构建这样的应用...