432 |
432 |
433 NetworkUDPBroadCast(); |
433 NetworkUDPBroadCast(); |
434 _network_udp_broadcast = 300; // Stay searching for 300 ticks |
434 _network_udp_broadcast = 300; // Stay searching for 300 ticks |
435 } |
435 } |
436 |
436 |
437 void NetworkUDPQueryServer(const byte* host, unsigned short port) |
437 NetworkGameList *NetworkUDPQueryServer(const byte* host, unsigned short port) |
438 { |
438 { |
439 struct sockaddr_in out_addr; |
439 struct sockaddr_in out_addr; |
440 Packet *p; |
440 Packet *p; |
441 NetworkGameList *item; |
441 NetworkGameList *item; |
442 char hostname[NETWORK_HOSTNAME_LENGTH]; |
442 char hostname[NETWORK_HOSTNAME_LENGTH]; |
443 |
443 |
444 // No UDP-socket yet.. |
444 // No UDP-socket yet.. |
445 if (_udp_client_socket == INVALID_SOCKET) |
445 if (_udp_client_socket == INVALID_SOCKET) |
446 if (!NetworkUDPListen(0, 0)) |
446 if (!NetworkUDPListen(0, 0)) |
447 return; |
447 return NULL; |
448 |
448 |
449 ttd_strlcpy(hostname, host, sizeof(hostname)); |
449 ttd_strlcpy(hostname, host, sizeof(hostname)); |
450 |
450 |
451 out_addr.sin_family = AF_INET; |
451 out_addr.sin_family = AF_INET; |
452 out_addr.sin_port = htons(port); |
452 out_addr.sin_port = htons(port); |
465 NetworkSendUDP_Packet(p, &out_addr); |
465 NetworkSendUDP_Packet(p, &out_addr); |
466 |
466 |
467 free(p); |
467 free(p); |
468 |
468 |
469 UpdateNetworkGameWindow(false); |
469 UpdateNetworkGameWindow(false); |
|
470 return item; |
470 } |
471 } |
471 |
472 |
472 /* Register us to the master server |
473 /* Register us to the master server |
473 This function checks if it needs to send an advertise */ |
474 This function checks if it needs to send an advertise */ |
474 void NetworkUDPAdvertise(void) |
475 void NetworkUDPAdvertise(void) |