Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /branches/ttcomtester/teraterm/teraterm/ttwsk.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6738 - (hide annotations) (download) (as text)
Sat May 20 06:38:01 2017 UTC (6 years, 10 months ago) by maya
Original Path: trunk/teraterm/teraterm/ttwsk.c
File MIME type: text/x-csrc
File size: 5217 byte(s)
NO_INET6 マクロを削除
1 maya 3227 /* Tera Term
2     Copyright(C) 1994-1998 T. Teranishi
3     All rights reserved. */
4    
5     /* TERATERM.EXE, Winsock interface */
6    
7     #include "teraterm.h"
8     #include "ttwsk.h"
9 doda 4089 #include "WSAAsyncGetAddrInfo.h"
10 maya 3227
11     static HANDLE HWinsock = NULL;
12    
13     Tclosesocket Pclosesocket;
14     Tconnect Pconnect;
15     Thtonl Phtonl;
16     Thtons Phtons;
17     Tinet_addr Pinet_addr;
18     Tioctlsocket Pioctlsocket;
19     Trecv Precv;
20     Tselect Pselect;
21     Tsend Psend;
22     Tsetsockopt Psetsockopt;
23     Tsocket Psocket;
24     // Tgethostbyname Pgethostbyname;
25     TWSAAsyncSelect PWSAAsyncSelect;
26     TWSAAsyncGetHostByName PWSAAsyncGetHostByName;
27     TWSACancelAsyncRequest PWSACancelAsyncRequest;
28     TWSAGetLastError PWSAGetLastError;
29     TWSAStartup PWSAStartup;
30     TWSACleanup PWSACleanup;
31 doda 4165 // Tgetaddrinfo Pgetaddrinfo;
32     Tfreeaddrinfo Pfreeaddrinfo;
33 doda 4089 TWSAAsyncGetAddrInfo PWSAAsyncGetAddrInfo;
34 maya 3227
35     void CheckWinsock()
36     {
37     WORD wVersionRequired;
38     WSADATA WSData;
39    
40     if (HWinsock == NULL) return;
41     #if 0
42     wVersionRequired = 1*256+1;
43     if ((PWSAStartup(wVersionRequired, &WSData) != 0) ||
44     (LOBYTE(WSData.wVersion) != 1) ||
45     (HIBYTE(WSData.wVersion) != 1))
46     {
47     PWSACleanup();
48     FreeLibrary(HWinsock);
49     HWinsock = NULL;
50     }
51     #else
52     wVersionRequired = MAKEWORD(2, 2);
53     if ((PWSAStartup(wVersionRequired, &WSData) != 0) ||
54     (LOBYTE(WSData.wVersion) != 2) ||
55     (HIBYTE(WSData.wVersion) != 2))
56     {
57     PWSACleanup();
58     FreeLibrary(HWinsock);
59     HWinsock = NULL;
60     }
61     #endif
62     }
63    
64     #define IdCLOSESOCKET 3
65     #define IdCONNECT 4
66 doda 6435 #define IdHTONL 8
67     #define IdHTONS 9
68 maya 3227 #define IdINET_ADDR 10
69     #define IdIOCTLSOCKET 12
70     #define IdRECV 16
71     #define IdSELECT 18
72     #define IdSEND 19
73     #define IdSETSOCKOPT 21
74     #define IdSOCKET 23
75     // #define IdGETHOSTBYNAME 52
76     #define IdWSAASYNCSELECT 101
77     #define IdWSAASYNCGETHOSTBYNAME 103
78     #define IdWSACANCELASYNCREQUEST 108
79     #define IdWSAGETLASTERROR 111
80     #define IdWSASTARTUP 115
81     #define IdWSACLEANUP 116
82    
83     BOOL LoadWinsock()
84     {
85     BOOL Err;
86    
87     if (HWinsock == NULL)
88     {
89 maya 4134 char wsock32_dll[MAX_PATH];
90    
91     GetSystemDirectory(wsock32_dll, sizeof(wsock32_dll));
92     strncat_s(wsock32_dll, sizeof(wsock32_dll), "\\wsock32.dll", _TRUNCATE);
93     HWinsock = LoadLibrary(wsock32_dll);
94 maya 3227 if (HWinsock == NULL) return FALSE;
95    
96     Err = FALSE;
97    
98     Pclosesocket = (Tclosesocket)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdCLOSESOCKET));
99     if (Pclosesocket==NULL) Err = TRUE;
100    
101     Pconnect = (Tconnect)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdCONNECT));
102     if (Pconnect==NULL) Err = TRUE;
103    
104     Phtonl = (Thtonl)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdHTONL));
105     if (Phtonl==NULL) Err = TRUE;
106    
107     Phtons = (Thtons)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdHTONS));
108     if (Phtons==NULL) Err = TRUE;
109    
110     Pinet_addr = (Tinet_addr)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdINET_ADDR));
111     if (Pinet_addr==NULL) Err = TRUE;
112    
113     Pioctlsocket = (Tioctlsocket)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdIOCTLSOCKET));
114     if (Pioctlsocket==NULL) Err = TRUE;
115    
116     Precv = (Trecv)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdRECV));
117     if (Precv==NULL) Err = TRUE;
118    
119     Pselect = (Tselect)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSELECT));
120     if (Pselect==NULL) Err = TRUE;
121    
122     Psend = (Tsend)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSEND));
123     if (Psend==NULL) Err = TRUE;
124    
125     Psetsockopt = (Tsetsockopt)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSETSOCKOPT));
126     if (Psetsockopt==NULL) Err = TRUE;
127    
128     Psocket = (Tsocket)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSOCKET));
129     if (Psocket==NULL) Err = TRUE;
130    
131     // Pgethostbyname = (Tgethostbyname)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdGETHOSTBYNAME));
132     // if (Pgethostbyname==NULL) Err = TRUE;
133    
134     PWSAAsyncSelect = (TWSAAsyncSelect)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSAASYNCSELECT));
135     if (PWSAAsyncSelect==NULL) Err = TRUE;
136    
137     PWSAAsyncGetHostByName =
138     (TWSAAsyncGetHostByName)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSAASYNCGETHOSTBYNAME));
139     if (PWSAAsyncSelect==NULL) Err = TRUE;
140    
141     PWSACancelAsyncRequest = (TWSACancelAsyncRequest)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSACANCELASYNCREQUEST));
142     if (PWSACancelAsyncRequest==NULL) Err = TRUE;
143    
144     PWSAGetLastError = (TWSAGetLastError)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSAGETLASTERROR));
145     if (PWSAGetLastError==NULL) Err = TRUE;
146    
147     PWSAStartup = (TWSAStartup)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSASTARTUP));
148     if (PWSAStartup==NULL) Err = TRUE;
149    
150     PWSACleanup = (TWSACleanup)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSACLEANUP));
151     if (PWSACleanup==NULL) Err = TRUE;
152    
153 doda 4165 // Pgetaddrinfo = (Tgetaddrinfo)GetProcAddress(HWinsock, "getaddrinfo");
154     // if (Pgetaddrinfo==NULL) Err = TRUE;
155    
156     Pfreeaddrinfo = freeaddrinfo;
157 doda 4089 PWSAAsyncGetAddrInfo = WSAAsyncGetAddrInfo;
158    
159 maya 3227 if (Err)
160     {
161     FreeLibrary(HWinsock);
162     HWinsock = NULL;
163     return FALSE;
164     }
165     }
166    
167     CheckWinsock();
168    
169     return (HWinsock != NULL);
170     }
171    
172     void FreeWinsock()
173     {
174     HANDLE HTemp;
175    
176     if (HWinsock == NULL) return;
177     HTemp = HWinsock;
178     HWinsock = NULL;
179     PWSACleanup();
180     Sleep(50); // for safety
181     FreeLibrary(HTemp);
182     }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26