mirror of
https://github.com/game-stop/veejay.git
synced 2025-12-19 22:30:06 +01:00
find my own (external) ip address
This commit is contained in:
@@ -1159,3 +1159,55 @@ char *vj_server_retrieve_msg(vj_server *vje, int id, char *dst, int *str_len )
|
|||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char *vj_server_my_ip()
|
||||||
|
{
|
||||||
|
struct addrinfo h;
|
||||||
|
|
||||||
|
char hostname[512];
|
||||||
|
if( gethostname(hostname,sizeof(hostname)) < 0 ) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *target = "8.8.8.8"; //google public dns
|
||||||
|
char *port = "53";
|
||||||
|
|
||||||
|
veejay_memset(&h,0,sizeof(h));
|
||||||
|
h.ai_family = AF_INET;
|
||||||
|
h.ai_socktype = SOCK_STREAM;
|
||||||
|
|
||||||
|
struct addrinfo* info;
|
||||||
|
int ret = 0;
|
||||||
|
if((ret = getaddrinfo( target, port, &h, &info )) != 0 ) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( info->ai_family == AF_INET6 ) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int sock = socket( info->ai_family, info->ai_socktype, info->ai_protocol);
|
||||||
|
if( sock <= 0 )
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if( connect(sock, info->ai_addr, info->ai_addrlen ) < 0 ) {
|
||||||
|
close(sock);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct sockaddr_in local;
|
||||||
|
socklen_t len = sizeof(local);
|
||||||
|
if( getsockname( sock, (struct sockaddr*)&local, &len ) < 0 ) {
|
||||||
|
close(sock);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
char tmp[INET_ADDRSTRLEN ];
|
||||||
|
if( inet_ntop( local.sin_family, &(local.sin_addr), tmp, sizeof(tmp))==NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
close(sock);
|
||||||
|
|
||||||
|
return strdup(tmp);
|
||||||
|
}
|
||||||
|
|||||||
@@ -85,4 +85,6 @@ int vj_server_link_can_read( vj_server *vje, int link_id);
|
|||||||
|
|
||||||
void vj_server_geo_stats();
|
void vj_server_geo_stats();
|
||||||
|
|
||||||
|
char *vj_server_my_ip();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user