C#通過Socket在網絡間發送和接收圖片的演示代碼

b5cw 9年前發布 | 2K 次閱讀 C#

C#通過Socket在網絡間發送和接收圖片的演示代碼

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

namespace ConsoleApplication1
{
    Class Program
    {
        static void Main (String[] args)
        {
            // 1. to create a socket
            Socket sListen = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            // 2. Fill IP
            IPAddress IP = IPAddress.Parse ("127.0.0.1");
            IPEndPoint IPE = new IPEndPoint (IP, 4321);

            // 3. binding
            sListen.Bind (IPE);

            // 4. Monitor
            Console.WriteLine ("Service is listening ...");
            sListen.Listen (2);

            // 5. loop to accept client connection requests
            while (true)
            {
                Socket clientSocket;
                try
                {
                    clientSocket = sListen.Accept ();
                }
                catch
                {
                    throw;
                }

                // send data to the client
                //clientSocket.Send (Encoding.Unicode.GetBytes ("I am a server, you there?? !!!!"));

                // send the file
                byte[] buffer = ReadImageFile ("1.jpg");
                clientSocket.Send (buffer, buffer.Length, SocketFlags.None);
                Console.WriteLine ("Send success!");
            }
        }

        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;
        }

    }
}



 
客戶端接收和保存圖片的代碼
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.IO;

namespace ConsoleApplication2
{
    Class Program
    {
        static void Main (String[] args)
        {
            // 1. to create a socket
            Socket S = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            // 2. fill in the remote IP
            IPAddress IP = IPAddress.Parse ("127.0.0.1");
            IPEndPoint IPE = new IPEndPoint (IP, 4321);

            Console.WriteLine ("started connection service ....");
            // 3. connect to the server
            s.Connect (IPE);

            // 4. receive data
            byte[] buffer = new byte[1000000];
            s.Receive (buffer, buffer.Length, SocketFlags.None);
            //var Msg = Encoding.Unicode.GetString (buffer);
            //Console.WriteLine ("received message: (0)", msg);
            Console.WriteLine ("Receive success");

            FileStream fs =  File.Create ("1.jpg");
            fs.Write (buffer, 0, buffer.Length);
            fs.Close ();

            Console.ReadKey ();
        }
    }
}
 
 本文由用戶 b5cw 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!