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 2476 - (hide annotations) (download) (as text)
Mon Apr 14 17:35:50 2008 UTC (16 years ago) by maya
Original Path: teraterm/trunk/teraterm/ttwsk.c
File MIME type: text/x-csrc
File size: 4532 byte(s)
ファイル移動に伴う修正

1 maya 2476 /* 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    
10     static HANDLE HWinsock = NULL;
11    
12     Tclosesocket Pclosesocket;
13     Tconnect Pconnect;
14     Thtonl Phtonl;
15     Thtons Phtons;
16     Tinet_addr Pinet_addr;
17     Tioctlsocket Pioctlsocket;
18     Trecv Precv;
19     Tselect Pselect;
20     Tsend Psend;
21     Tsetsockopt Psetsockopt;
22     Tsocket Psocket;
23     // Tgethostbyname Pgethostbyname;
24     TWSAAsyncSelect PWSAAsyncSelect;
25     TWSAAsyncGetHostByName PWSAAsyncGetHostByName;
26     TWSACancelAsyncRequest PWSACancelAsyncRequest;
27     TWSAGetLastError PWSAGetLastError;
28     TWSAStartup PWSAStartup;
29     TWSACleanup PWSACleanup;
30    
31     void CheckWinsock()
32     {
33     WORD wVersionRequired;
34     WSADATA WSData;
35    
36     if (HWinsock == NULL) return;
37     #if 0
38     wVersionRequired = 1*256+1;
39     if ((PWSAStartup(wVersionRequired, &WSData) != 0) ||
40     (LOBYTE(WSData.wVersion) != 1) ||
41     (HIBYTE(WSData.wVersion) != 1))
42     {
43     PWSACleanup();
44     FreeLibrary(HWinsock);
45     HWinsock = NULL;
46     }
47     #else
48     wVersionRequired = MAKEWORD(2, 2);
49     if ((PWSAStartup(wVersionRequired, &WSData) != 0) ||
50     (LOBYTE(WSData.wVersion) != 2) ||
51     (HIBYTE(WSData.wVersion) != 2))
52     {
53     PWSACleanup();
54     FreeLibrary(HWinsock);
55     HWinsock = NULL;
56     }
57     #endif
58     }
59    
60     #define IdCLOSESOCKET 3
61     #define IdCONNECT 4
62     #define IdHTONL 8
63     #define IdHTONS 9
64     #define IdINET_ADDR 10
65     #define IdIOCTLSOCKET 12
66     #define IdRECV 16
67     #define IdSELECT 18
68     #define IdSEND 19
69     #define IdSETSOCKOPT 21
70     #define IdSOCKET 23
71     // #define IdGETHOSTBYNAME 52
72     #define IdWSAASYNCSELECT 101
73     #define IdWSAASYNCGETHOSTBYNAME 103
74     #define IdWSACANCELASYNCREQUEST 108
75     #define IdWSAGETLASTERROR 111
76     #define IdWSASTARTUP 115
77     #define IdWSACLEANUP 116
78    
79     BOOL LoadWinsock()
80     {
81     BOOL Err;
82    
83     if (HWinsock == NULL)
84     {
85     HWinsock = LoadLibrary("WSOCK32.DLL");
86     if (HWinsock == NULL) return FALSE;
87    
88     Err = FALSE;
89    
90     Pclosesocket = (Tclosesocket)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdCLOSESOCKET));
91     if (Pclosesocket==NULL) Err = TRUE;
92    
93     Pconnect = (Tconnect)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdCONNECT));
94     if (Pconnect==NULL) Err = TRUE;
95    
96     Phtonl = (Thtonl)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdHTONL));
97     if (Phtonl==NULL) Err = TRUE;
98    
99     Phtons = (Thtons)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdHTONS));
100     if (Phtons==NULL) Err = TRUE;
101    
102     Pinet_addr = (Tinet_addr)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdINET_ADDR));
103     if (Pinet_addr==NULL) Err = TRUE;
104    
105     Pioctlsocket = (Tioctlsocket)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdIOCTLSOCKET));
106     if (Pioctlsocket==NULL) Err = TRUE;
107    
108     Precv = (Trecv)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdRECV));
109     if (Precv==NULL) Err = TRUE;
110    
111     Pselect = (Tselect)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSELECT));
112     if (Pselect==NULL) Err = TRUE;
113    
114     Psend = (Tsend)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSEND));
115     if (Psend==NULL) Err = TRUE;
116    
117     Psetsockopt = (Tsetsockopt)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSETSOCKOPT));
118     if (Psetsockopt==NULL) Err = TRUE;
119    
120     Psocket = (Tsocket)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSOCKET));
121     if (Psocket==NULL) Err = TRUE;
122    
123     // Pgethostbyname = (Tgethostbyname)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdGETHOSTBYNAME));
124     // if (Pgethostbyname==NULL) Err = TRUE;
125    
126     PWSAAsyncSelect = (TWSAAsyncSelect)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSAASYNCSELECT));
127     if (PWSAAsyncSelect==NULL) Err = TRUE;
128    
129     PWSAAsyncGetHostByName =
130     (TWSAAsyncGetHostByName)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSAASYNCGETHOSTBYNAME));
131     if (PWSAAsyncSelect==NULL) Err = TRUE;
132    
133     PWSACancelAsyncRequest = (TWSACancelAsyncRequest)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSACANCELASYNCREQUEST));
134     if (PWSACancelAsyncRequest==NULL) Err = TRUE;
135    
136     PWSAGetLastError = (TWSAGetLastError)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSAGETLASTERROR));
137     if (PWSAGetLastError==NULL) Err = TRUE;
138    
139     PWSAStartup = (TWSAStartup)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSASTARTUP));
140     if (PWSAStartup==NULL) Err = TRUE;
141    
142     PWSACleanup = (TWSACleanup)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSACLEANUP));
143     if (PWSACleanup==NULL) Err = TRUE;
144    
145     if (Err)
146     {
147     FreeLibrary(HWinsock);
148     HWinsock = NULL;
149     return FALSE;
150     }
151     }
152    
153     CheckWinsock();
154    
155     return (HWinsock != NULL);
156     }
157    
158     void FreeWinsock()
159     {
160     HANDLE HTemp;
161    
162     if (HWinsock == NULL) return;
163     HTemp = HWinsock;
164     HWinsock = NULL;
165     PWSACleanup();
166     Sleep(50); // for safety
167     FreeLibrary(HTemp);
168     }

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