C# Socket TCP发送图片与接收图片

发送端:

        FileStream fs = new FileStream(@"7.jpg", FileMode.Open);
        private void SendImage()
        {
            //实例化socket    
            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 56799);
            socket.Connect(ipep);
            long contentLength = fs.Length;
            //第一次发送数据包的大小
            socket.Send(BitConverter.GetBytes(contentLength));
            while (true)
            {
                //每次发送128字节
                byte[] bits = new byte[128];
                int r = fs.Read(bits, 0, bits.Length);
                if (r <= 0) break;
                socket.Send(bits, r, SocketFlags.None);
            }
            socket.Close();
            fs.Position = 0;
        }

 

接收端:

        private void RecviveImage()
        {
            new Thread(delegate ()
            {
                Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 56799);
                socket.Bind(ipep);
                socket.Listen(2);

                while (true)
                {
                    try
                    {
                        byte[] data = new byte[8];
                        Socket clientSocket = socket.Accept();
                        if (clientSocket.Connected)
                        {
                            clientSocket.Receive(data, data.Length, SocketFlags.None);
                            long contentLength = BitConverter.ToInt64(data, 0);
                            int size = 0;
                            MemoryStream ms = new MemoryStream();

                            while (size < contentLength)
                            {
                                byte[] bits = new byte[128];
                                int r = clientSocket.Receive(bits, bits.Length, SocketFlags.None);
                                if (r <= 0) break;
                                ms.Write(bits, 0, r);
                                size += r;
                            }

                            Image img = Image.FromStream(ms);
                            this.Invoke((EventHandler) delegate
                            {
                                pictureBox1.Image = img; //更新在窗体控件上
                            });

                            clientSocket.Close();
                            ms.Flush();
                            ms.Close();
                            ms.Dispose();
                        }
                    }
                    catch { }
                }
            })
            { IsBackground = true }.Start();
        }

 

GitHub是一个基于web的版本控制源代码托管平台。它提供了一个方便的界面,使开发者能够更轻松地管理协作开发项目。GitHub是一个开放的平台,任何人都可以免费注册一个账户并创建自己的仓库。 使用GitHub,开发者可以将他们的代码仓库上传到平台上,并其他开发者共享。这使得多人协作开发变得更加方便。开发者可以通过提交合并请求来管理代码的更改,以及团队成员讨论并审查代码。GitHub还提供了一系列的工具功能,如问题跟踪、维基页面、部署、持续集成等,帮助开发者更好地管理组织项目。 除了个人团队项目外,GitHub还是开源社区的重要组成部分。许多开源项目都托管在GitHub上,任何人都可以自由地查看、复制、修改贡献代码。开发者可以发现并加入他们感兴趣的开源项目,并他人合作改进维护。在GitHub上,开源社区可以通过拉取请求议题来推动项目的发展。 GitHub不仅用于开发代码,还扩展到其他领域。许多学术研究项目也使用GitHub来管理共享代码、数据集文档。人们还可以使用GitHub Pages来创建静态网站,以展示他们的项目、博客或个人简历。 总之,GitHub提供了一个便捷的平台,使开发者能够更好地管理协作开发项目。它成为开源社区的中心,促进了代码的共享合作,使开发人员能够更好地学习成长。无论是个人项目、团队协作还是开源贡献,GitHub都发挥着重要的作用。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值