QwikChat Video Conferencing Protocol 1.1 ---------------------------------------- Revision: March, 2002 Steps in connecting two video conferencing clients. Definitions: CLIENT1 - the client that wants to connect; 1.2.3.4 CLIENT2 - the client that is being connected to; 4.3.2.1 Available Commands: Command Return Codes Short Description --------------------------------------------------------- HELO 201; 501 greeting message STAT 202; 502 user's status SEND 203 unreliable transmit CONN 303; 503 connect DCON 304 disconnect QUIT 421 quit Return Code Summary: 100s - strictly information message (not shown to user) 200s - major messages (not necessarily shown to user) 300s - control messages (not shown to user) 400s - temporary warning messages 500s - fatal errors (shown to user) Compatability, Legacy, etc. Upon connecting, a 100 code is sent out to make sure that only QCVC clients connect. A 421 is used for disconnects because it conforms with several other protocols used on the Internet, including FTP and SMTP, to mean a closing of the connection. Thus, a 421 upon connect will tell all clients that service is not available, for whatever reason. Sequence: First, CLIENT1 attempts to connect to CLIENT2 via its IP address. If it fails, an error is thrown, and the connection is aborted. If CLIENT1 successfully connects to CLIENT2, then CLIENT2 will greet CLIENT1 on the socket by sending the 100 connection greeting message. CLIENT1 can close the connection anytime by sending a QUIT command, and CLIENT2 can close the connection anytime by sending a 421 error message. CLIENT2 <<< 100 QCVC/1.0 CLIENT1 >>> HELO joe@4.3.2.1 CLIENT2 <<< 201 joe is here or CLIENT2 <<< 501 joe is not here The HELO command is used to establish whether the specified user exists at the specified IP address. Then the handshake can continue appropriately. CLIENT1 >>> STAT joe@4.3.2.1 CLIENT2 <<< 202 online or CLIENT2 <<< 202 away or CLIENT2 <<< 202 busy or CLIENT2 <<< 402 status not available (non-fatal error) Implementations are free to create more locale-specific extensions to the STAT (status) command. CLIENT1 >>> CONN video joe@4.3.2.1 CLIENT2 <<< 303 video 11000 or CLIENT2 <<< 503 error; explain here... Lets first explain the CONN (connect) command. It takes two arguments, the first being the type of service that is going to be established (audio, video etc.), and the second is the standard username@ipaddress format. The 303 return code means that the service "video" is available on UDP port 11000. In the future, it may be changed to "udp/11000" to signify the UDP port in order to accomodate the possibility of TCP ports. CLIENT1 >>> DCON video joe@4.3.2.1 CLIENT2 <<< 304 video disconnected The above are the basics of a QCVC implementation. Supplementary Commands: The following supplementary commands allow implementations to extend the basic functionality. CLIENT1 >>> GETP video rate CLIENT2 <<< 310 video 30 CLIENT1 >>> SETP video rate 10 CLIENT2 <<< 310 video 10 or CLIENT2 <<< 510 video 10 could not set frame rate The above is sufficient for setting the options. Connection parameters include: rate, compression The SEND command can be used for unreliable communications that return nothing, such as chat messages between two users. CLIENT1 >>> SEND chat Hello Joe! Here, CLIENT2 does not return any error code or message, hence the unreliability of the command. The message is not guaranteed to be delivered correctly, or even at all. On the receiving end, if a user wishes to send a chat message, then the server (CLIENT2) will return an error code to the "true" client. For instance, if the other user wishes to send the same exact message: CLIENT2 <<< 203 chat Hello Joe! -- QwikChat Video Conferencing Protocol 1.1 (C) 2002-2004 Amir Malik. All Rights Reserved. http://qwikchat.virusexperts.com/qcvc/