我想用超时和 TTL 进行 ping。我使用 Apple 的代码(“Simple Ping”)。我读了它 “iOS ping with timeout”。我更改代码:
CFSocketNativeHandle sock = CFSocketGetNative(self->_socket);
struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = 100000; // 0.1 sec
setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (void *)&tv, sizeof(tv));
bytesSent = sendto(
sock,
[packet bytes],
[packet length],
0,
(struct sockaddr *) [self.hostAddress bytes],
(socklen_t) [self.hostAddress length]
);
但我不明白我应该把代码放在哪里会显示接收数据包的超时。我还需要使用 TTL(生存时间)信息进行 ping。我想根据这种模式获取信息:icmp_seq=count from=ip_address ttl=value_of_ttl time=value_of_replytime_ms