2

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}
4

1 に答える 1