Saturday, November 11, 2006

10 Things to Know About Skype Ap2Ap Programming

The ap2ap capability is an interesting new network computing paradigm but it is not like a conventional network.

end nodes are addressed by skype name, which addresses a person, not a computer

people can login to skype multiple times, so addressable endpoints are not unique

skype can go online/offline at will, so there is a concept of "presence" that needs to be managed

you can only make ap2ap connections to your buddy list or people who you have chatted to "recently"

both ends of an ap2ap connection have to choose a unique string used to identify their conversation or protocol

if you quit and restart skype, the first login can persist for a while, so you can get multiple ap2ap connections from a single user, although the ghosts of your previous connections cannot respond to a message. I think is is because you connect to a different supernode each time, and the first one isn't sure if you have really gone away yet

messages have to be sent as text, so binary objects have to be converted first using something like base64

the network can behave differently each time you use it, and this non-determinism makes testing difficult

relayed connections are limited to about 3KB/s, direct ones can run at several MB/s over a LAN

Skype4Java is cross-platform, but the maximum message size is about 64KB on windows and 16KB on OSX/Linux, and there are several bugs and limitations in the older version of the API library that is used by Skype 2.0 and earlier releases. Use Skype 2.5 or later for the best performance and stability