Closed sadanro100 closed 8 years ago
@sadanro100 how did you solve it? How do you retrieve the ip address? Thanks.
@sadanro100 would you share your solution here ~ thank you very much
@sadanro100 @pierdr I got this solution, It's worked for me.
- (void)server:(PSWebSocketServer *)server webSocketDidOpen:(PSWebSocket *)webSocket {
NSData *myData = (__bridge NSData *)[webSocket copyStreamPropertyForKey: @"kCFStreamPropertySocketNativeHandle"];
CFSocketNativeHandle socketHandle = *(const CFSocketNativeHandle*)myData.bytes;
uint8_t * buffer = malloc(myData.length);
struct sockaddr_storage addr;
socklen_t addr_len = sizeof(addr);
getpeername(socketHandle, (struct sockaddr *)&addr, &addr_len);
NSString * remoteAddr;
if (addr.ss_family == AF_INET) {
char addressString[INET_ADDRSTRLEN];
inet_ntop(AF_INET, &((struct sockaddr_in *)&addr)->sin_addr, addressString, INET_ADDRSTRLEN);
remoteAddr = [[NSString alloc] initWithUTF8String:addressString];
} else if (addr.ss_family == AF_INET6) {
char addressString[INET6_ADDRSTRLEN];
inet_ntop(AF_INET6, &((struct sockaddr_in6 *)&addr)->sin6_addr, addressString, INET6_ADDRSTRLEN);
remoteAddr = [[NSString alloc] initWithUTF8String:addressString];
}
free(buffer);
// Now you have remoteAddr which will be a
// string representation of a IPv4 or IPv6 address!
NSLog(@"Remote Address: %@", remoteAddr);
NSLog(@"Server websocket did open = %@ ref=%@", webSocket, [webSocket copyStreamPropertyForKey: @"kCFStreamPropertySocketNativeHandle"]);
}
How can I get address of the client connected in PSWebSocket?
I've tried
webSocket.copyStreamPropertyForKey(kCFStreamPropertySocketRemoteHostName as String)
but it returns nil.
Thank you