【发布时间】:2026-02-14 12:55:01
【问题描述】:
我继承了一个 iPhone 应用程序/项目,它打开了与另一台设备的套接字连接(想想网络摄像头)。只要设备可以通过 wifi 网络访问,这就可以正常工作。但是,如果无法访问,应用程序会挂起调用“connect”。
(为了清楚起见,删除了错误检查。)
-(void)connect_to_control:(NSTimer*) timer
{
clientsock_fd = socket(AF_INET, SOCK_STREAM, 0);
int no_delay = 1;
setsockopt(clientsock_fd, IPPROTO_TCP, TCP_NODELAY, &no_delay, 4);
struct sockaddr_in the_addr;
memset((void *)&the_addr, 0, sizeof(the_addr));
the_addr.sin_family = AF_INET;
the_addr.sin_port = htons(25556);
const char* server_addr = "192.168.3.22";
unsigned long ip_addr = inet_addr(server_addr);
the_addr.sin_addr.s_addr = ip_addr;
int err_test = connect(clientsock_fd, (const struct sockaddr*)&the_addr, sizeof(the_addr));
}
我的第一个想法是“ping”该地址以查看它是否可以访问。到目前为止,我已经发现了 Apple 的“Reachability”示例,但这并不能确定地址是否可以访问,只有当网络可以访问(模拟器除外)和一个旧的 Apple 示例“SimplePing”,它使用的头文件不是包含在 iPhone SDK 中。
我拥有数十年的 C++/C# 经验,但我是一名 iPhone 菜鸟,试图帮助朋友的小公司及时为重要的贸易展调试一些东西。提前致谢。
【问题讨论】:
标签: iphone objective-c