在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字符串。
请帮帮我。提前感谢!
你当然可以自己写所有这些,但你是否考虑过使用库来帮助节省时间?如果是这样的话,请在这里签出networkcomms.net,特别是关于使用示例中的图像发送非基元对象的教程。
免责声明:我是这个库的开发人员。
将imageStream转换为内存流。然后转换为字节,然后转换为基数64。
Stream imgStream = readImgFromFile(filename);
var memoryStream = new MemoryStream(imgStream);
byte[] result = memoryStream.ToArray();
base64 = System.Convert.ToBase64String(result);