云计算百科
云计算领域专业知识百科平台

C#接受文件

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

namespace Server {     class Program     {         static void Main(string[] args)         {             IPEndPoint ip = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8080);             Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);             sock.Bind(ip);             sock.Listen(1);

            while(true)             {                 Socket client = sock.Accept();

                if (client.Connected)                 {                     Thread clientThread = new Thread(new ParameterizedThreadStart(MyClient));                     clientThread.IsBackground = true;                     clientThread.Start(client);                 }             }         }

        private const int BUFFERSIZE = 1024/* * 1024*/;         private static string _path = @"D:\\";

        private static void MyClient(object socket)         {             Socket clientSocket = socket as Socket;             string clientName = clientSocket.RemoteEndPoint.ToString();             Console.WriteLine("新客户端连接:" + clientName);

            try             {                 while(true)                 {                     byte[] buffer = new byte[BUFFERSIZE];                     int countReceive = clientSocket.Receive(buffer);                     string receiveStr = Encoding.Default.GetString(buffer, 0, countReceive);                     Console.WriteLine("收到:" + clientName + ":" + receiveStr);                     string[] command = receiveStr.Split(',');

                    string fileName = null;                     long fileLength = -1L;

                    if (command[0] == "nameAndLength")                     {                         fileName = command[1];                         fileLength = long.Parse(command[2]);                         clientSocket.Send(Encoding.Default.GetBytes("ok"));                         Console.WriteLine("接收文件:" + fileName + " 请等候……");

                        long recieved = 0L;

                        using (FileStream fsWriter = new FileStream(Path.Combine(_path,fileName), FileMode.Create, FileAccess.Write, FileShare.None))                         {                             int recive;

                            while(recieved < fileLength)                             {                                 recive = clientSocket.Receive(buffer);                                 fsWriter.Write(buffer, 0, recive);                                 fsWriter.Flush();                                 recieved += recive;                                 Console.WriteLine("已接收数据:{0}/{1}", recieved.ToString(), fileLength.ToString());                             }

                            Console.WriteLine("接收完成……\\n");                         }                     }                 }             }             catch (Exception)             {                 Console.WriteLine("客户端:" + clientName + "退出");             }         }     } }  

赞(0)
未经允许不得转载:网硕互联帮助中心 » C#接受文件
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!