在Windows Phone中使用TCP套接字客户端应用程序发送图像

本文关键字:应用程序 客户端 图像 套接字 TCP Phone Windows | 更新日期: 2023-09-27 18:20:00

我正在尝试为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字符串。

请帮帮我。提前感谢!

在Windows Phone中使用TCP套接字客户端应用程序发送图像

你当然可以自己写所有这些,但你是否考虑过使用库来帮助节省时间?如果是这样的话,请在这里签出networkcomms.net,特别是关于使用示例中的图像发送非基元对象的教程。

免责声明:我是这个库的开发人员。

将imageStream转换为内存流。然后转换为字节,然后转换为基数64。

Stream imgStream = readImgFromFile(filename);
var memoryStream = new MemoryStream(imgStream);
byte[] result = memoryStream.ToArray();
base64 = System.Convert.ToBase64String(result);