1

1つのモバイルデバイスから別のモバイルデバイスにファイルを転送できます。送信者がこの8バイトのテキストファイルを送信すると、受信者側は256バイトのtxtファイルになり、txtファイルの内容を開くと、私の情報とたくさんの四角いボックスがあります。送信者からの私のコードは次のとおりです。

            string fileName = @"SendTest.txt";
            System.Uri uri = new Uri("obex://" + selectedAddr + "/" + System.IO.Path.GetFileName(fileName)); 
            ObexWebRequest request = new ObexWebRequest(uri);

            Stream requestStream = request.GetRequestStream(); 
            FileStream fs = File.OpenRead(fileName);

            byte[] buffer = new byte[1024]; 
            int readBytes = 1;

            while (readBytes != 0) 
            {
            readBytes = fs.Read(buffer,0, buffer.Length);
            requestStream.Write(buffer,0, readBytes);
            }

            requestStream.Close();
            ObexWebResponse response = (ObexWebResponse)request.GetResponse();
            MessageBox.Show(response.StatusCode.ToString());
            response.Close();

Any1 knwsどうすれば解決できますか?

4

3 に答える 3

1

Bluetoothセッションの最小パケットサイズは256バイトのようです。ファイルサイズが256バイト未満であるため、ペイロードは特殊文字で埋められます。EOF(^ z)文字まで256バイトの配列を読み取り、EOFのみまでバイトを取得してディスクに保存してみてください。ペイロードを破棄する必要があります。

于 2010-06-01T05:01:59.640 に答える
0

コード サンプルにデバッグを追加し、Read 呼び出しの後にダンプを追加するreadBytesと、何が表示されるでしょうか? 8の次に0だけ?

ファイルの言語は? たとえば、西洋の言語か東洋の何か?

前後のファイルの中身は?どのバイトがどこに追加されていますか?

于 2010-06-01T18:21:15.230 に答える
0

とにかく、次を使用してエラーを解決しました:

string fileName = @"SendTest.txt";

文字列 adr = "0025677FB346";

Uri uri = new Uri("obex://" + adr + "/" + System.IO.Path.GetFileName(fileName));

ObexWebRequest リクエスト = 新しい ObexWebRequest(uri);

request.ReadFile(ファイル名);

ObexWebResponse 応答 = (ObexWebResponse)request.GetResponse();

MessageBox.Show(response.StatusCode.ToString());

response.Close();

于 2010-06-03T06:55:10.890 に答える