できる限り詳しく説明するようにします。アプリで iPhone から取得ユニットに接続しようとしています。IP4 を使用しており、取得ユニットは DHCP をサポートしていないため、特定の静的 IP とポート番号を持つデバイスを常にスキャンします。
ユニットと iPhone 間の接続をテストする前に、デスクトップを使用してアドホック ネットワークを作成し、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 を設定し、その IP を使用して PC アプリを任意のデバイスに接続しようとすると、機能しません。
同じことが私の取得ユニットにも当てはまります。コールバック関数はまったく呼び出されません。
私は切実に助けが必要なので、どんな形の助けも歓迎します。ありがとう。