سلام
میخواستم نحوه ارسال مدیا از طریق برنامه نویسی سوکت رو بدونم
ممنون
//FILE TRANSFER USING C#.NET SOCKET - SERVER class FTServerCode { IPEndPoint ipEnd; Socket sock; public FTServerCode() { ipEnd = new IPEndPoint(IPAddress.Any, 5656); //Make IP end point to accept any IP address with port no 5656. sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP); //Here creating new socket object with protocol type and transfer data type sock.Bind(ipEnd); //Bind end point with newly created socket. } public static string receivedPath; public static string curMsg = "Stopped"; public void StartServer() { try { curMsg = "Starting..."; sock.Listen(100); /* That socket object can handle maximum 100 client connection at a time & waiting for new client connection / curMsg = "Running and waiting to receive file."; Socket clientSock = sock.Accept(); /* When request comes from client that accept it and return new socket object for handle that client. */ byte[] clientData = new byte[1024 * 5000]; int receivedBytesLen = clientSock.Receive(clientData); curMsg = "Receiving data..."; int fileNameLen = BitConverter.ToInt32(clientData, 0); /* I've sent byte array data from client in that format like [file name length in byte][file name] [file data], so need to know first how long the file name is. / string fileName = Encoding.ASCII.GetString(clientData, 4, fileNameLen); /* Read file name */ BinaryWriter bWrite = new BinaryWriter(File.Open (receivedPath +"/"+ fileName, FileMode.Append)); ; /* Make a Binary stream writer to saving the receiving data from client. / bWrite.Write(clientData, 4 + fileNameLen, receivedBytesLen - 4 - fileNameLen); /* Read remain data (which is file content) and save it by using binary writer. */ curMsg = "Saving file..."; bWrite.Close(); clientSock.Close(); /* Close binary writer and client socket */ curMsg = "Received & Saved file; Server Stopped."; } catch (Exception ex) { curMsg = "File Receiving error."; } } }
کد کلاینت
//FILE TRANSFER USING C#.NET SOCKET - CLIENT class FTClientCode { public static string curMsg = "Idle"; public static void SendFile(string fileName) { try { IPAddress[] ipAddress = Dns.GetHostAddresses("localhost"); IPEndPoint ipEnd = new IPEndPoint(ipAddress[0], 5656); /* Make IP end point same as Server. */ Socket clientSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP); /* Make a client socket to send data to server. */ string filePath = ""; /* File reading operation. */ fileName = fileName.Replace("\\", "/"); while (fileName.IndexOf("/") > -1) { filePath += fileName.Substring(0, fileName.IndexOf("/") + 1); fileName = fileName.Substring(fileName.IndexOf("/") + 1); } byte[] fileNameByte = Encoding.ASCII.GetBytes(fileName); if (fileNameByte.Length > 850 * 1024) { curMsg = "File size is more than 850kb, please try with small file."; return; } curMsg = "Buffering ..."; byte[] fileData = File.ReadAllBytes(filePath + fileName); /* Read & store file byte data in byte array. */ byte[] clientData = new byte[4 + fileNameByte.Length + fileData.Length]; /* clientData will store complete bytes which will store file name length, file name & file data. */ byte[] fileNameLen = BitConverter.GetBytes(fileNameByte.Length); /* File name length’s binary data. */ fileNameLen.CopyTo(clientData, 0); fileNameByte.CopyTo(clientData, 4); fileData.CopyTo(clientData, 4 + fileNameByte.Length); /* copy these bytes to a variable with format line [file name length] [file name] [ file content] */ curMsg = "Connection to server ..."; clientSock.Connect(ipEnd); /* Trying to connection with server. / curMsg = "File sending..."; clientSock.Send(clientData); /* Now connection established, send client data to server. */ curMsg = "Disconnecting..."; clientSock.Close(); /* Data send complete now close socket. */ curMsg = "File transferred."; } catch (Exception ex) { if(ex.Message=="No connection could be made because the target machine actively refused it") curMsg="File Sending fail. Because server not running." ; else curMsg = "File Sending fail." + ex.Message; } } }
ایا میشه کاری کرد توی اینترنت ارسال بشه بدون اینکه توی یه رنج باشن؟
شدنی هست
ولی متاسفانه من اینکار را انجام ندادم
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)