1

Windows Phone 用の単純な TCP クライアント アプリケーションを開発しようとしています。

サーバー側では、接続を受け入れてファイルを保存する単純な C# サーバー アプリケーションを使用しています。

MSDN で例を見ました (クライアント アプリの場合、http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202858(v=vs.105).aspx )。しかし、それは文字列のみを送信し、クライアントから画像にファイル (画像) を送信したいと考えています。

これは、クライアントから送信されたファイルを受け入れるサーバー側のコード スニペットです。

if (Listener.Pending())
                {
                    client = Listener.AcceptTcpClient();
                    netstream = client.GetStream();
                    Status = "Connected to a client\n";
                    result = MessageBox.Show(message, caption, buttons);

                    if (result == System.Windows.Forms.DialogResult.Yes)
                    {
                        string SaveFileName = string.Empty;
                        SaveFileDialog DialogSave = new SaveFileDialog();
                        DialogSave.Filter = "All files (*.*)|*.*";
                        DialogSave.RestoreDirectory = true;
                        DialogSave.Title = "Where do you want to save the file?";

                        DialogSave.FileName = "sample.txt";
                        if (DialogSave.ShowDialog() == DialogResult.OK)
                            SaveFileName = DialogSave.FileName;
                        if (SaveFileName != string.Empty)
                        {
                            int totalrecbytes = 0;
                            FileStream Fs = new FileStream(SaveFileName, FileMode.OpenOrCreate, FileAccess.Write);
                            while ((RecBytes = netstream.Read(RecData, 0, RecData.Length)) > 0)
                            {
                                Fs.Write(RecData, 0, RecBytes);
                                totalrecbytes += RecBytes;
                            }
                            Fs.Close();
                        }
                        netstream.Close();
                        client.Close();
                    }
                }

今、私が直面している問題は、電話から文字列を送信すると、サーバーが接続を正常に認識し、ファイルを保存するように求めることです。しかし、ファイルを保存して開くと、ファイルは空白です。

サーバーが正常に動作しているかどうかを確認するために、単純な C# クライアント アプリ (電話ではなく Windows) を作成し、それを使用してファイルを送信しました。そして、すべての内容がそのままで正常に保存されました。

私を助けてください。

問題: まず、電話から送信された文字列がサーバーによって認識されますが、ファイルに保存できません。第二に、電話(クライアント)から画像を送信する方法は?

画像をbase64文字列に変換してから、文字列をサーバーに送信することを考えました。しかし、Windows Phone で画像を base64 文字列に変換する方法がわかりません。

私を助けてください。前もって感謝します!

4

2 に答える 2

0

もちろん、これらすべてを自分で作成することもできますが、時間を節約するためにライブラリの使用を検討したことはありますか? その場合は、networkcomms.net、特に非プリミティブ オブジェクトの送信に関するチュートリアルを、例の画像を使用して確認してください

免責事項: 私はこのライブラリの開発者です。

于 2013-06-27T09:37:17.920 に答える
0

imageStream をメモリ ストリームに変換します。次に、バイトに変換してからBase 64に変換します。

Stream imgStream = readImgFromFile(filename);
var memoryStream = new MemoryStream(imgStream);
byte[] result = memoryStream.ToArray();
base64 = System.Convert.ToBase64String(result);
于 2013-06-28T06:50:06.223 に答える