Java ソケット サーバーに接続できません。Java ソケット経由で接続しているため、サーバーが動作していることはわかっています。CocoaAsyncSocket ライブラリを使用して、iOS デバイスからクライアント接続を確立しています。私は次のことを試しました、
[socket connectToHost:@"XXX.XXX.X.XXX" onPort:9090 error:&err]
メソッドですが、サーバーはクライアントの接続を認識せず、クライアント (CocoaAsyncSocket) は接続されていると認識します。それではダメだということで、別の接続方法があることに気が付きました。
したがって、代わりに connectToAddress メソッドを使用する必要があると考えています。この投稿を現在のコードのリファレンスとして使用しましたが、まだエラーが発生し、その理由がわかりません。私のバージョンと推奨バージョンとの唯一の違いは、sa_len を使用する長さです。エラーが発生し、xCode がそれを sin_len に切り替えたかったので、そうしました。私は直接ソケット接続に本当に慣れていないので、ご容赦ください。
GCDAsyncSocket *socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
struct sockaddr_in ip4addr;
ip4addr.sin_family = AF_INET;
ip4addr.sin_port = htons(9090);
inet_pton(AF_INET, "XXX.XXX.X.XXX", &ip4addr.sin_addr);
NSData *discoveryHost = [NSData dataWithBytes:&ip4addr length:ip4addr.sin_len];
NSError *err = nil;
if (![socket connectToAddress:discoveryHost error:&err])
{
NSLog(@"I CANNOT CONNECT!");
}
else
{
NSLog(@"IM CONNECTED!");
}
接続に失敗し、エラーは次のとおりです。
Error Domain=GCDAsyncSocketErrorDomain Code=2 "A valid IPv4 or IPv6 address was not given" UserInfo=0x8bac880 {NSLocalizedDescription=A valid IPv4 or IPv6 address was not given}