C# TCP发送图像,到达后重新组装
好吧,我目前一直在使用UDP(喜欢它),但我在这方面遇到了瓶颈,因为它不可能发送大量的东西。根据我的理解,不可能将它分开并重新组装(我可以重新组装,但这些部分将是我们的同步部分) 如果有一种方法可以在UDP中实现,我会洗耳恭听 但如果没有,我将需要尝试TCP 我想知道,我该怎么做 目前在UDP中,它非常简单: udpcap1.Send(u1,u1.Length,Address.Address.ToString(),1701) 字节[]数据字节2=udpcap1.Receive(参考地址) 差不多就是这样(除了我必须设置它来监听任何IP和端口) 但在TCP中,这似乎并不是那么容易,我不知道如何去做,到处玩也没用,搜索也没用,因为我不太了解它 我更喜欢只使用客户端,这意味着没有套接字来完成工作。 只需客户端发送,客户端接收 你能给我一些关于如何在TCP中发送和接收的帮助吗 下面是一个不起作用的代码示例:C# TCP发送图像,到达后重新组装,c#,tcp,C#,Tcp,好吧,我目前一直在使用UDP(喜欢它),但我在这方面遇到了瓶颈,因为它不可能发送大量的东西。根据我的理解,不可能将它分开并重新组装(我可以重新组装,但这些部分将是我们的同步部分) 如果有一种方法可以在UDP中实现,我会洗耳恭听 但如果没有,我将需要尝试TCP 我想知道,我该怎么做 目前在UDP中,它非常简单: udpcap1.Send(u1,u1.Length,Address.Address.ToString(),1701) 字节[]数据字节2=udpcap1.Receive(参考地址) 差不多
private void Send()
{
if (tcpcap.Connected == false)
{
tcpcap.Connect("127.0.0.1", 1700);
} //tcpcap.Connect(adress);
while (capcon == true)
{
Bitmap holder = new Bitmap(640, 480);
Graphics graphics = Graphics.FromImage(holder);
graphics.CopyFromScreen(0, 0, 0, 0, new Size(1920, 1200), CopyPixelOperation.SourceCopy);
byte[] u = imageToByteArray(holder);
tcpcap.Client.Send(u, u.Length, SocketFlags.None);
}
private void Listen()
{
while (checkBox1.Checked)
{
TcpClient client = this.tcplisten.AcceptTcpClient();
tcplisten.AcceptTcpClient();
if (tcplisten.Server.Connected)
{
byte[] b = new byte[tcplisten.Server.ReceiveBufferSize];
tcplisten.Server.Receive(b);
MemoryStream ms = new MemoryStream(b);
Image receivedImag = Image.FromStream(ms);
pictureBox1.BackgroundImage = receivedImag;
}
}
解决了,因为我知道更了解TCP的工作原理 正如EJP所说,只需流 TCP就像一个流,对于我这个只使用UDP的人来说,我不知道该怎么做。 UDP发送包,所以我可以说,这个包包含这个包,然后发送它 在TCP中,我可以在一个流中写入100个包,但我不关心包,我只需将我想要的写在流中,TCP将处理包的大小和顺序
这就解决了:)只需将字节从文件流到一端的套接字,然后从套接字流到另一端的文件。没有什么神秘的。除了设置输入和输出,两端的代码都是相同的。我不知道如何编写,这是我的问题。我对c#非常陌生,只需使用任何游戏中的示例代码即可理解。我需要一个发送和接收TCP的更“防故障”的示例,这样我就可以得到一个kickstart。谢谢