今天有個朋友問我如何訪問手機ip,上網找了幾個,用了近200多行代碼,最後發現頭文件用的竟然還是Linux中的,OC沒有這個頭文件。感覺socket本身應該可以後去自己的ip就試了一下,果然7、8行代碼就解決了。這個基本是c的socket,幾乎通用,別的平台也可以使用。
- (NSString *)getLocalIP{ struct sockaddr_in sa; socklen_t len = sizeof(sa); if(getsockname(sockfd, (struct sockaddr *)&sa, &len)) { NSLog(@獲取失敗!); } return [NSString stringWithUTF8String:inet_ntoa(sa.sin_addr)]; }
返回的字符串為本地ip
- (NSString *)getLocalIP{ socklen_t len = sizeof(serv_addr); if(!getpeername(sockfd, (struct sockaddr *)&serv_addr, &len)) { } NSLog(@對方IP:%s , inet_ntoa(serv_addr.sin_addr)); NSLog(@對方PORT:%d , ntohs(serv_addr.sin_port)); return [NSString stringWithUTF8String:inet_ntoa(serv_addr.sin_addr)]; }獲取對方ip和端口號