Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TCP发送图像,到达后重新组装_C#_Tcp - Fatal编程技术网

C# TCP发送图像,到达后重新组装

C# TCP发送图像,到达后重新组装,c#,tcp,C#,Tcp,好吧,我目前一直在使用UDP(喜欢它),但我在这方面遇到了瓶颈,因为它不可能发送大量的东西。根据我的理解,不可能将它分开并重新组装(我可以重新组装,但这些部分将是我们的同步部分) 如果有一种方法可以在UDP中实现,我会洗耳恭听 但如果没有,我将需要尝试TCP 我想知道,我该怎么做 目前在UDP中,它非常简单: udpcap1.Send(u1,u1.Length,Address.Address.ToString(),1701) 字节[]数据字节2=udpcap1.Receive(参考地址) 差不多

好吧,我目前一直在使用UDP(喜欢它),但我在这方面遇到了瓶颈,因为它不可能发送大量的东西。根据我的理解,不可能将它分开并重新组装(我可以重新组装,但这些部分将是我们的同步部分)

如果有一种方法可以在UDP中实现,我会洗耳恭听

但如果没有,我将需要尝试TCP

我想知道,我该怎么做

目前在UDP中,它非常简单:

udpcap1.Send(u1,u1.Length,Address.Address.ToString(),1701)

字节[]数据字节2=udpcap1.Receive(参考地址)

差不多就是这样(除了我必须设置它来监听任何IP和端口)

但在TCP中,这似乎并不是那么容易,我不知道如何去做,到处玩也没用,搜索也没用,因为我不太了解它

我更喜欢只使用客户端,这意味着没有套接字来完成工作。 只需客户端发送,客户端接收

你能给我一些关于如何在TCP中发送和接收的帮助吗

下面是一个不起作用的代码示例:

 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。谢谢