如何使用套接字C#发送/接收连续图像? [英] How can I send / receive continuous images with socket C#?

查看:75
本文介绍了如何使用套接字C#发送/接收连续图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,我的套接字代码有问题。

当我从CLIENT发送SEND命令时,SERVER将图像发送到CLIENT,它的成功。

当我发送SEND命令时,如何发送/接收连续图像?

请帮帮我,谢谢!



Hi everyone, I have a problem with my socket code.
When I send "SEND" command from CLIENT, SERVER send image to CLIENT, its success.
How can I send / receive continuous images WHEN I send "SEND" command?
Please help me, thanks!

SERVER
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace server_image_3
{
    class Program
    {
        static void Main(string[] args)
        {
            IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999);
            Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            server.Bind(iep);
            server.Listen(10);
            Console.WriteLine("Waiting for connection...");
            Socket client = server.Accept();
            NetworkStream ns = new NetworkStream(client);
            StreamReader sr = new StreamReader(ns);
            StreamWriter sw = new StreamWriter(ns);
            //string kq = "";
            while (true)
            {
                string s = sr.ReadLine();
                s = s.ToUpper();
                if (s.Equals("QUIT"))
                {
                    break;
                }
                if (s.Equals("SEND"))
                {
                    //kq = DateTime.Now.ToString("dd/MM/yyyy");
                    // send the file
                    byte[] buffer = ReadImageFile("1.jpg");
                    client.Send(buffer, buffer.Length, SocketFlags.None);
                    Console.WriteLine("Send success!");
                }
                
                sw.Flush();
            }
            sr.Close();
            sw.Close();
            client.Close();
        }
        private static byte[] ReadImageFile(String img)
        {
            FileInfo fileinfo = new FileInfo(img);
            byte[] buf = new byte[fileinfo.Length];
            FileStream fs = new FileStream(img, FileMode.Open, FileAccess.Read);
            fs.Read(buf, 0, buf.Length);
            fs.Close();
            //fileInfo.Delete ();
            GC.ReRegisterForFinalize(fileinfo);
            GC.ReRegisterForFinalize(fs);
            return buf;
        }
    }
}



////////////////////

客户


////////////////////
CLIENT

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;

namespace client_image_3
{
    class Program
    {
        static void Main(string[] args)
        {
            IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999);
            Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            client.Connect(iep);
            NetworkStream ns = new NetworkStream(client);
            StreamReader sr = new StreamReader(ns);
            StreamWriter sw = new StreamWriter(ns);
            while (true)
            {
                string input = Console.ReadLine();
                sw.WriteLine(input);
                sw.Flush();
                if (input.ToUpper().Equals("QUIT"))
                {
                    break;
                }
                else 
                {
                    // receive data
                    
                    
                        byte[] buffer = new byte[1000000];
                        client.Receive(buffer, buffer.Length, SocketFlags.None);
                        Console.WriteLine("Receive success");
                        
                        FileStream fs = File.Create("1.jpg");

                        fs.Write(buffer, 0, buffer.Length);
                        
                    
                    //fs.Close();
                }
                //
                //string kq = sr.ReadLine();
               // Console.WriteLine(kq);
            }
            sr.Close();
            sw.Close();
            ns.Close();
            client.Close();
        }
    }
}

推荐答案

为什么不使用文件类?



您的服务器:



Why not just use "File" class?

Your server:

 class Program
{
    static void Main(string[] args)
    {
        IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999);
        Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        server.Bind(iep);
        server.Listen(10);
        Console.WriteLine("Waiting for connection...");
        using (Socket client = server.Accept())
        {
            while (true)
            {
                string s = Console.ReadLine().ToUpper();

                if (s.Equals("QUIT"))
                {
                    break;
                }
                if (s.Equals("SEND"))
                {
                    // send the file
                    byte[] buffer = File.ReadAllBytes("1.jpg");
                    client.Send(buffer, buffer.Length, SocketFlags.None);
                    Console.WriteLine("Send success!");
                }
            }
        }
    }
}





您的客户:





Your client:

class Program
{
    static void Main(string[] args)
    {
        IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999);
        using (Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
        {
            client.Connect(iep);

            while (true)
            {
                string input = Console.ReadLine();

                if (input.ToUpper().Equals("QUIT"))
                {
                    break;
                }
                else
                {
                    // receive data
                    byte[] buffer = new byte[1000000];
                    client.Receive(buffer, buffer.Length, SocketFlags.None);
                    Console.WriteLine("Receive success");

                    File.WriteAllBytes("1.jpg", buffer);
                }
            }
        }
    }
}


这篇关于如何使用套接字C#发送/接收连续图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆