0

C# アプリから iOS アプリに文字列を送信する際に問題が発生しています。ソケットを使用して C# から SocketTest にデータを送信しようとしましたが、受信しました。ソケットを使用して Socktest から iOS アプリにデータを送信しましたが、すべてうまくいきました。問題は、ソケットを使用して C# から iOS にデータを送信しようとしたときです...接続して切断しますが、メッセージを送信しません (または、iOS が読み取らない...)

C# でソケットを使用してデータを送信するには、次を使用しています。

Socket soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
System.Net.IPAddress ipAdd = System.Net.IPAddress.Parse("192.168.0.10");
System.Net.IPEndPoint remoteEP = new IPEndPoint(ipAdd, 2525);
soc.Connect(remoteEP);
byte[] byData = System.Text.Encoding.ASCII.GetBytes("TESTESTTES");
soc.Send(byData);
soc.Disconnect(false);

そして、iOSでそれを受け取るために、私はAsyncSocketライブラリを使用しています(これは投稿する関連コードだと思います):

-(void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
{
    [self logInfo:FORMAT(@"Accepted client %@:%hu", host, port)];   
    NSString *welcomeMsg = @"Welcome to the AsyncSocket Echo Server\r\n";
    NSData *welcomeData = [welcomeMsg dataUsingEncoding:NSUTF8StringEncoding];
    [sock writeData:welcomeData withTimeout:-1 tag:WELCOME_MSG];
    [sock readDataToData:[AsyncSocket CRLFData] withTimeout:READ_TIMEOUT tag:0];
}

- (void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag
{
    if(tag == ECHO_MSG)
    {
    [sock readDataToData:[AsyncSocket CRLFData] withTimeout:READ_TIMEOUT tag:0    ];
    }
}

誰でも私を助けることができますか?おそらく私は間違った方法でデータを送信していますか?ASCII以外のエンコーディングも試しましたが、成功しませんでした。

4

1 に答える 1

0

なんとかやり遂げました!すべて順調に進んでいるように見えますが、詳細を 1 つ忘れていました。iOS 側では、送信していない CRLF データを期待していました。送信前にエンコードする文字列に「\r\n」を追加するだけで修正しました。:)

于 2013-02-19T11:49:09.740 に答える