【发布时间】:2017-04-21 21:50:35
【问题描述】:
我的代码有问题。这是一个聊天程序,您可以在其中从另一台 PC 截取屏幕截图。我得到了下面的代码。但是如果我运行代码,屏幕截图看起来像this。问题是我没有收到图像的所有字节(截断)。客户端(发送方)和服务器(接收方)肯定有问题。
代码:
客户:(发送):
string ip = "192.168.98.78";
Bitmap b = new Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height);
Graphics g = Graphics.FromImage(b);
Console.WriteLine("taking screenshot");
g.CopyFromScreen(0, 0, 0, 0, b.Size);
g.Dispose();
MemoryStream ms = new MemoryStream();
b.Save(ms, ImageFormat.Png);
byte[] bmp = ms.ToArray();
Console.WriteLine("sending pic");
do {
try
{
TcpClient tcpClient = new TcpClient(ip, 2000);
NetworkStream clientSockStream = tcpClient.GetStream();
Console.WriteLine("connecting to server");
StreamWriter clientStreamWriter = new StreamWriter(clientSockStream);
Console.WriteLine("send data");
clientSockStream.Write(bmp, 0, 1024);
tcpClient.Close();
fertig = true;
} catch (Exception h)
{
Console.WriteLine(h.Message);
}
} while (fertig != true);
服务器:(接收方)
Console.WriteLine("");
TcpListener tcpServerListener = new TcpListener(IPAddress.Any, 2000);
tcpServerListener.Start();
try
{
Socket serverSocket = tcpServerListener.AcceptSocket();
NetworkStream serverSocketStream = new NetworkStream(serverSocket);
Console.WriteLine("SERVER");
tcpServerListener.Start();
Console.WriteLine("[connected to client]");
byte[] byt = new byte[1024];
Console.WriteLine("-");
serverSocketStream.Read(byt, 0, 1024);
Console.WriteLine("[-]");
Console.WriteLine("write bytes");
File.WriteAllBytes(@"c:\users\jakob\desktop\bild1.jpg", byt);
} catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
tcpServerListener.Stop();
do
{
【问题讨论】:
-
我投票决定将此问题作为离题结束,因为寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example。
-
嘿,我告诉过你我收到的图片不是完整的。
-
@jakob 你有一个正确的答案。单击
✔标记为解决方案,谢谢。
标签: c# arrays networking bitmap byte