2009-05-28 5 views
0
void CSocket::WriteSocket() 
{ 
    TBuf8<2> KData (_L8("60")); 
//RBuf8 KData; 
    RBuf8 aQuery; 
    aQuery.CleanupClosePushL(); 
    aQuery.CreateL(100); 
// <?xml version="1.0"?><AM><P/><A><CE/></A></AM> 
    _LIT8(KData1,"61"); 
    //_LIT8(KData2,"20"); 
    _LIT8(KData3,"A"); 
    _LIT8(KData4,"<?xml version=\"1.0\"?><AM><P/><A><CE/></A></AM>"); 
    TBuf8<100> buff,buff1; 
    buff.Copy(_L("<?xml version=\"1.0\"?><AM><P/><A><CE/></A></AM>")); 
    TInt len=buff.Length(); 
    buff1.AppendNum(len); 
    aQuery.Append(KData1); 
    aQuery.Append(buff1); 
// aQuery.Append(KData2); 
    aQuery.Append(KData3); 
    aQuery.Append(buff);  
    //iSocket.Send(KData,KExpeditedDataOpt,iStatus); 
    iSocket.Write((TDesC8)aQuery,iStatus); 
    User::WaitForRequest(iStatus); 
} 

私はこのコードをSymbian上でJavaのサーバとの通信に使用しています。シンビアンのTCP/IPでの書き込みについて

しかし、問題は、次のとおりです。データがサーバに到達していません。デバイスが正常に接続されたことを示しています。このコードで何が間違っているのですか? TDes8はJavaのプレーンテキストと互換性がありますか?

+1

あなたがネットワーク経由で送信されますないかを確認する(Wiresharkのような)パケットスニファを使用したことがありますか? –

+1

この質問はのようなものではありませんか?/questions/919472/writing-data-from-client-socket-in-symbian-to-java-server>を参照してください。新しい質問を投稿するのではなく、古い質問を編集してください。 – laalto

答えて

1

TDes8は、Java側が(Javaの文字が何であるかである)16ビットUnicodeを期待している場合、Java側はそう罰金ない、ASCIIを読み取ろうとした場合罰金ですちょうどバイトです。しかし、相手側のソケットを読んでいるのであれば、互換性がなくてもまだデータが見えますが、期待していたものではありません。そして、あなたは、サーバーと通信しているこれにより、プロトコルに関係なく、サーバーが実装されてどの言語の、文字セットを指定する必要がありそうでない場合

:。

  • それはエミュレータ上で動作しますか?
  • iStatusにエラーがありますか?通常、ソケットが接続されている場合は、書き込むことができますが、決して知ることはできません。
  • ソケットが接続されていることをサーバーが報告していますか?間違ったホストや間違ったポートに接続した可能性があります。
  • サーバーが何らかのデータを読み込んだが何らかの理由で失敗した場合は、わかりますか?私はあなたがもう一方の端をデバッグしているかどうかを尋ねていると思います。そうでなければ、データが適切な形式でなく、もう一方の端で無視されている可能性があります。私はあなたが6146A<?xml version="1.0"?><AM><P/><A><CE/></A></AM>を送っていると思います。いくつかのトレースやパケットスニッフィングが、それが本当かどうかをあなたに伝えます。
  • "a"で始まる変数は通常パラメータです。これは実際のコードですか?そうでない場合は、不正なデータに関することが適用され、発信者があなたに間違ったことを与えている可能性があります。
  • この問題には影響しませんが、返品前にPopAndDestroy aQueryが必要な場合があります。
  • あなたの関数はWriteSocketLと呼ばれる必要があります。重複した質問から
+0

こんにちは、私は をネットワークに接続していますが、それは、サーバー側でヌル示し返信 ため おかげで –

1

クロス投稿返信:

あなたのモバイルネットワークオペレータは、任意の非HTTPのトラフィックをブロックすることができます。

サーバーはそれをすべてを返す前に、より多くのデータを受信する必要があります。

また、私はバイト[]、いない文字列で着信ネットワークデータを置くために、サーバー上の低レベルのJavaソケットを期待考慮Javaの文字/文字列の使用について特に心配です。サーバーがreadLine()メソッドの呼び出しのようなものを使用している場合は、クライアントが送信するデータに改行文字を追加する必要があります。

関連する問題