A method for downloading a plug-in for an Instant Messaging client, comprising: receiving a request for the plug-in from a user of the IM client; detecting a directly accessible peer client that is currently online, comprising: acquiring, from an IM server, online peer client information pertaining to currently online peer clients based on a contact list of the IM client; and in the event that there is one or more currently online peer clients, determining, based at least in part on address information associated with contacts in the contact list of the IM client, whether there is a directly accessible peer client that is capable of directly exchanging messages with the IM client without going through a server; transmitting a plug-in name and version information to the IM server; receiving a plug-in signature message from the IM server, the plug-in signature message being generated based at least in part on the plug-in name and the version information and uniquely identifying the plug-in; sending the plug-in name, the version information, and the plug-in signature message to the directly accessible peer client for comparison with locally stored plug-in signature messages on the directly accessible peer client; sending (208; 410) a plug-in download request to the directly accessible peer client; in the event that the plug-in is received from the directly accessible peer client, installing the plug-in on the IM client. receiving a request for the plug-in from a user of the IM client; detecting a directly accessible peer client that is currently online, comprising: acquiring, from an IM server, online peer client information pertaining to currently online peer clients based on a contact list of the IM client; and in the event that there is one or more currently online peer clients, determining, based at least in part on address information associated with contacts in the contact list of the IM client, whether there is a directly accessible peer client that is capable of directly exchanging messages with the IM client without going through a server; acquiring, from an IM server, online peer client information pertaining to currently online peer clients based on a contact list of the IM client; and in the event that there is one or more currently online peer clients, determining, based at least in part on address information associated with contacts in the contact list of the IM client, whether there is a directly accessible peer client that is capable of directly exchanging messages with the IM client without going through a server; transmitting a plug-in name and version information to the IM server; receiving a plug-in signature message from the IM server, the plug-in signature message being generated based at least in part on the plug-in name and the version information and uniquely identifying the plug-in; sending the plug-in name, the version information, and the plug-in signature message to the directly accessible peer client for comparison with locally stored plug-in signature messages on the directly accessible peer client; sending (208; 410) a plug-in download request to the directly accessible peer client; in the event that the plug-in is received from the directly accessible peer client, installing the plug-in on the IM client.