類比串口調試器,為了方便網路調試作的,哪位朋友喜歡的話EMAIL:songkun607@yahoo.com.cn,主要功能是連收客戶機的串連,發送和接收資料,可以自動擷取本地IP,可以ASCII和十六進位的顯示。以下是我寫的一個服務類,主要針對SDK編程///////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 hWnd,char *IP,int port); int WsaAccept(HWND 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 控制代碼,參數設定*/ WSADATA wsa; SOCKET m_server,m_client; SOCKADDR_IN ServerAddr,ClientAddr;};///////////////////////wsaserver.cpp//////////////////////////////#include "wsaserver.h" WsaServer::WsaServer(){ WSAStartup(MAKEWORD(2,2), &wsa);} WsaServer::~WsaServer(){ WSACleanup( );}/*名稱:SetServer 功能:設定IP和連接埠 參數:hWnd視窗控制代碼,IP伺服器IP,port連接埠號碼*/int WsaServer::SetServer(HWND 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, (PSOCKADDR) &ServerAddr,sizeof(ServerAddr)); WSAAsyncSelect(m_server,hWnd,WM_SOCKET,FD_ACCEPT|FD_CLOSE); listen(m_server, 5); return 1;}/*名稱:WsaAccept 功能:接收用戶端的接連 參數:hWnd視窗控制代碼,clietnfrm客戶區的socket*/int WsaServer::WsaAccept(HWND 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); return 1;}/*名稱:WsaRecv 功能:接收用戶端發來的資料 參數:客戶區socket控制代碼*/int WsaServer::WsaRecv(SOCKET clientfrm,char *buff,int len){ int ret; ret=recv((SOCKET)clientfrm,buff,len,0); buff[ret]='/0'; return ret;}/*名稱:WsaSend 功能:發送資料 參數:資料緩衝buff*/int WsaServer::WsaSend(char *buff){ int ret; ret=send(m_client,buff,strlen(buff),0); return 1;}/*名稱:SetClient 功能:擷取當前client控制代碼 參數:clientfrm控制代碼*/int WsaServer::SetClient(SOCKET clientfrm){ m_client=clientfrm; return 1;}/*名稱:GetLocalIP 功能:擷取本機名和IP 參數:name 儲存的本機名,IP儲存的本機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;}