MCPcopy Create free account
hub / github.com/TASEmulators/fceux / FCEUD_NetworkConnect

Function FCEUD_NetworkConnect

src/drivers/win/netplay.cpp:185–307  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

183}
184
185int FCEUD_NetworkConnect(void)
186{
187 WSADATA WSAData;
188 SOCKADDR_IN sockin; /* I want to play with fighting robots. */ /* clack clack clack razzzzzzzzzz */
189 SOCKET TSocket;
190 int netdivisor;
191
192 if(WSAStartup(MAKEWORD(1,1),&WSAData))
193 {
194 NetStatAdd("*** Error initializing WIndows Sockets.");
195 return(0);
196 }
197 wsainit=1;
198
199 if( (TSocket=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)
200 {
201 WSE("Error creating stream socket.");
202 FCEUD_NetworkClose();
203 return(0);
204 }
205
206 memset(&sockin,0,sizeof(sockin));
207 sockin.sin_family=AF_INET;
208
209 {
210 struct hostent *phostentb;
211 unsigned long hadr;
212 int sockin_len;
213
214 sockin.sin_port=0;
215 sockin.sin_addr.s_addr=INADDR_ANY;
216 sockin_len=sizeof(sockin);
217
218 hadr=inet_addr(netplayhost);
219
220 if(hadr!=INADDR_NONE)
221 sockin.sin_addr.s_addr=hadr;
222 else
223 {
224 NetStatAdd("*** Looking up host name...");
225 if(!(phostentb=gethostbyname((const char *)netplayhost)))
226 {
227 WSE("Error getting host network information.");
228 closesocket(TSocket);
229 FCEUD_NetworkClose();
230 return(0);
231 }
232 memcpy((char *)&sockin.sin_addr,((PHOSTENT)phostentb)->h_addr,((PHOSTENT)phostentb)->h_length);
233 }
234
235 sockin.sin_port=htons(remotetport);
236 NetStatAdd("*** Connecting to remote host...");
237 if(connect(TSocket,(PSOCKADDR)&sockin,sizeof(sockin))==SOCKET_ERROR)
238 {
239 WSE("Error connecting to remote host.");
240 closesocket(TSocket);
241 FCEUD_NetworkClose();
242 return(0);

Callers 1

NetConFunction · 0.70

Calls 9

NetStatAddFunction · 0.85
WSEFunction · 0.85
recv_tcpwrapFunction · 0.85
FCEUI_NetplayStartFunction · 0.85
FCEUD_NetworkCloseFunction · 0.70
en32Function · 0.70
md5_startsFunction · 0.50
md5_updateFunction · 0.50
md5_finishFunction · 0.50

Tested by

no test coverage detected