Normal way: Open URL or file, read/write bytes from it when available: http://mxr.mozilla.org/seamonkey/source/netwerk/base/public/nsIChannel.idl http://mxr.mozilla.org/seamonkey/source/netwerk/base/public/nsIStreamListener.idl http://mxr.mozilla.org/seamonkey/source/xpcom/io/nsIInputStream.idl http://mxr.mozilla.org/seamonkey/source/xpcom/io/nsIOutputStream.idl http://mxr.mozilla.org/seamonkey/source/xpcom/io/nsIFile.idl http://mxr.mozilla.org/seamonkey/source/xpcom/io/nsILocalFile.idl --- Listen to server sockets: (What I (ab)use) http://mxr.mozilla.org/seamonkey/source/netwerk/base/public/nsASocketHandler.h http://mxr.mozilla.org/seamonkey/source/netwerk/base/public/nsISocketTransportService.idl