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

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