Simulate Serial debugger, in order to facilitate network debugging, which friends like e-mail: songkun607@yahoo.com.cn, the main function is to connect to the client connection, send and receive data, you can automatically obtain the local IP address, it can be displayed in ASCII or hexadecimal format. The following is a service class I wrote, mainly for SDK programming ///// wsaserver. h ///////////////// # include <winsock2.h> # include <windows. h> # pragma comment (Lib, "ws2_32.lib") # define wm_socket wm_user + 1 class wsaserver {public: wsaserver ();~ Wsaserver (); int setserver (hwnd, char * IP, int port); int wsaaccept (hwnd); int wsarecv (socket clientfrm, char * buff, int Len ); int wsasend (char * buff); int setclient (socket clientfrm); int getlocalip (char far * Name, char far * IP); Private:/* wsaasyncselect handle, parameter settings */wsadata WSA; socket m_server, m_client; sockaddr_in serveraddr, clientaddr ;}; /// // wsaserver. CPP /////////////////// /// // # Include "wsaserver. H "wsaserver: wsaserver () {wsastartup (makeword (), & WSA);} wsaserver ::~ Wsaserver () {wsacleanup ();}/* Name: setserver function: set IP and port parameters: hwnd window handle, IP server IP, Port port number */INT wsaserver :: setserver (hwnd, char * IP, int port) {m_server = socket (af_inet, sock_stream, ipproto_tcp); serveraddr. sin_family = af_inet; If (strcmp (IP, "") = 1) serveraddr. sin_addr.s_un.s_addr = htonl (inaddr_any); else serveraddr. sin_addr.s_un.s_addr = inet_addr (IP); serveraddr. sin_port = htons (port); BIND (m_server, (psocka DDR) & serveraddr, sizeof (serveraddr); wsaasyncselect (m_server, hwnd, wm_socket, fd_accept | fd_close); Listen (m_server, 5); return 1;}/* Name: wsaaccept: receives the client's successive parameters: hwnd window handle, socket */INT wsaserver: wsaaccept (hwnd) {int caddrlen; caddrlen = sizeof (clientaddr ); m_client = accept (m_server, (psockaddr) & clientaddr, & caddrlen); wsaasyncselect (m_client, hwnd, wm_socket, fd_read | fd_write | fd_close); retu RN 1;}/* Name: wsarecv function: receives data from the client. Parameter: client socket handle */INT wsaserver: wsarecv (socket clientfrm, char * buff, int Len) {int ret; ret = Recv (socket) clientfrm, buff, Len, 0); buff [RET] = '/0'; return ret;}/* Name: wsasend function: send data parameters: data cache buff */INT wsaserver: wsasend (char * buff) {int ret; ret = Send (m_client, buff, strlen (buff ), 0); return 1;}/* Name: setclient function: Get the current client handle parameter: clientfrm handle */INT wsaserver: setclient (socket clien Tfrm) {m_client = clientfrm; return 1;}/* Name: getlocalip function: Get local name and IP parameter: name saved local name, IP saved local IP */INT wsaserver:: getlocalip (char far * Name, char far * IP) {hostent * hostinfo; If (gethostname (name, sizeof (name) = 0) {If (hostinfo = gethostbyname (name ))! = NULL) {strcpy (IP, inet_ntoa (* (struct in_addr *) * hostinfo-> h_addr_list); return 1 ;}} return 0 ;}