XBOX Debugging Client/Server package =========== What is it? =========== This is a client/server package that will let you send send debug messages from your XBOX to your computer via TCP/IP This package can also serve as a beginner's guide to the XBOX networking API and to network programming for Windows. =================== How is this useful? =================== When your program is crashing on you and you don't know where or why, you can use this package to provide instantaneous messaging from the XBOX to your computer. Another way of doing essentially the same thing is to write debugging information to a file on the XBOX HD and then use EvolutionX to transfer that file back to your computer where you can read it. This debugging package is just an easier way to see your results. There is also a WaitKey() command that will make the XBOX program wait until you have pressed a key on your computer. It will transfer that character back to the XBOX and you could use it to branch to a different code location. This means that you could step through your code and branch off to different sections depending on what key you press on your computer. ================ How do I use it? ================ Put the debugclient.cpp and debugclient.h files into your project directory. In your project, make sure you've also included the following files in your "Common" folder: xbNet.cpp xbSockAddr.cpp xbSocket.cpp xbstopwatch.cpp These files are located in the Samples\xbox\common\src directory. You'll also need to go to your project settings and include the xonlined.lib (debug) or xonline.lib (release) library file. Once you've done that, you can use the package in the following manner: ----------BEGIN----------- CDebugClient m_debugClient ; //Establish a connection to 192.168.123.111 on port 7654. //The "1" parameter means that we want this connection to block. //Specify "0" instead to get a nonblocking connection. //Nonblocking connections won't wait to send/receive //data, so calls to Recv and Send return immediately. if ( m_debugClient.Init( "192.168.123.111", 7654, 1 ) == 0 ) { //"debugclientinit failed } //send the string "debug message\r\n" to the debug server. //15 is the length of the string "debug message\r\n" if ( m_debugClient.Send( "debug message\r\n", 15 ) == 0 ) { //send failed } //this code will make the xbox wait until you've pressed a key on your //computer. Then it will branch depending on what key you entered. switch ( m_debugClient.WaitKey( ) ) { case 'T' : executeProc1() ; break ; case 'D' : executeProc2() ; break ; default : break ; } //close the connection, stop networking m_debugClient.Cleanup() ----------END----------- That's really all there is to it. To make it work, first run debugserver.exe on your computer. This will start listening for connections on port 7654. (debugserver.exe source code is included, so you can change that port value to whatever you want or add code to grab that setting from the registry, ini file, command line, whatever.) Now that debugserver.exe is running on your computer, you can start up your XBOX program. When the Init function is executed, a message will show up on your debugserver window saying that the connection was established. It might not show up right away, so give it a few seconds. From then on, the debugserver window will display the data you send via the Send() functions. The DebugClient class is simply a helper class which encapsulates some functionality from the XBSocket class. There's lots of other useful stuff in there including binding/listening so that you can turn your XBOX into network server. The debugserver application shows you how to create client/server programs on your computer using TCP4U. TCP4U is an excellent wrapper around the WINSOCK API that really facilitates network programming. With these two pieces of the puzzle and your own initiative, you can do things like XBOX FTP/HTTP servers, gaming between XBOX and computers, etc, etc. Enjoy!