我会尽量详细。我正在尝试在我的应用程序中从我的 iPhone 连接到采集单元。我们使用的是 IP4,而采集单元不支持 DHCP,因此它总是扫描具有特定静态 IP 和端口号的设备。
在我测试设备和我的 iPhone 之间的连接之前,我使用我的桌面创建了一个 adhoc 网络,并在我的 iPhone 上进行了尝试。这是我的代码的一部分。
CFSocketContext CTX = { 0, description, NULL, NULL, NULL };
/* Create the server socket as a TCP IPv4 socket and set a callback */
/* for calls to the socket's lower-level accept() function */
TCPServer = CFSocketCreate(NULL, PF_INET, SOCK_STREAM, IPPROTO_TCP,
kCFSocketAcceptCallBack
, (CFSocketCallBack)WiFiCallBack, &CTX);
/* Set the port and address we want to listen on */
struct sockaddr_in addr;
memset(&addr, 0, sizeof(addr));
addr.sin_len = sizeof(addr);
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
CFDataRef addressData = CFDataCreate( NULL, (UInt8*)(&addr), sizeof( struct sockaddr_in ) );
CFSocketSetAddress(TCPServer, addressData);
它可以工作,如果我将分配给 iPhone 的 IP 输入到我桌面上的 PC 应用程序,我可以在我的桌面和 iPhone 之间进行数据传输。但是,如果我为 iPhone 设置一个静态 IP 并尝试让 PC 应用程序连接到具有该 IP 的任何设备,它就不起作用。
我的采集单元也是如此。根本不调用回调函数。
我急需帮助,因此欢迎任何形式的帮助。谢谢。