1. ホーム
  2. iphone

[解決済み] ReadStreamから読み込もうとすると、エラーDomain=kCFErrorDomainCFNetwork Code=2を受信する。

2022-02-16 02:51:03

質問

を同期的に読み込もうとしています。 CFReadStream で作成されたオブジェクトです。 CFStreamCreatePairWithSocketToHost . ストリームは問題なく開いたのですが CFReadStreamRead が-1を返し、エラーになります。

Error Domain=kCFErrorDomainCFNetwork Code=2 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error 2.)" UserInfo=0x14a920 {kCFGetAddrInfoFailureKey=8}

このReadStreamを非同期で使用した場合にも、これとまったく同じエラーが発生しました。

どうすればいいですか?

簡単に説明すると おそらくDNSの解決に失敗したのでしょう。

docs には、"The streams do not open a connection to the specified host until one of the streams is opened" とあり、kCFGetAddrInfoFailureKey.について、以下のように記載されています。

このキーに問い合わせると、DNS 検索の際に getaddrinfo(3) が最後に返したエラーコードが返されます。この結果を解釈するには、/usr/include/netdb.h でエラーコードを調べます。

netdb.hによると

#define EAI_NONAME  8  /* hostname nor servname provided, or not known */