AndrewWork
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Доброго времени суток. Приведу часть программы, которая получает список дирикторий с сервера. public string ListDir() { string command =""; Socket sss = getDataSocket (); command = "LIST"; command +="\r\n" ; ClientSocket.Send(Encoding.ASCII.GetBytes(command), command.Length, 0); Response(); Byte[] readBytes; int sizeReceived; string serverMessage = ""; do { readBytes = new Byte[READ_BUFFER_SIZE]; sizeReceived = sss.Receive(readBytes, readBytes.Length, SocketFlags.None); serverMessage += Encoding.ASCII.GetString(readBytes, 0, sizeReceived); if ( sizeReceived == 0 ) break ; } while (true); //sizeReceived == readBytes.Length & !serverMessage.EndsWith("\r\n")); // Go back for more if necessary return serverMessage; if (firstTime) { Response(); firstTime = false; } } private Socket getDataSocket () { Socket pasvSocket; string command = "PASV";//PASV:Specifies that the server data transfer process is to listen for a connection request from the client data transfer process. command += "\r\n"; ClientSocket.Send(Encoding.ASCII.GetBytes(command), command.Length, 0); //if(firstTime) //{ // Response(); // firstTime=false; //} // Get server IP and port address, response sample is: .... (196,1,64,106,5,129) string fullAddress =Response(); if (fullAddress.Substring(0,3) != "227") { fullAddress =Response(); } fullAddress = fullAddress.Remove(0, fullAddress.IndexOf('(') + 1);//takes only what is fullAddress = fullAddress.Substring(0, fullAddress.IndexOf(')'));//between paranthesis string[] addressParts = fullAddress.Split(','); string pasvAddress = addressParts[0] + "." + addressParts[1] + "." + addressParts[2] + "." + addressParts[3]; int pasvPort = Convert.ToInt32(addressParts[4]) * 256 + Convert.ToInt32(addressParts[5]); // Open the Data socket pasvSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); pasvSocket.Connect(new IPEndPoint(IPAddress.Parse(pasvAddress),pasvPort)); return pasvSocket;//return the created socket } Возможно моя участь быть избитым ногами, но всё же осмелюсь спросить - кирилицу получить (в виде русских папок и т.п.) таким образом не получается, где грабли ? Если нет возможности обяснить - ткните меня куда-нть шоб почитать для самообразования. За любую ценную информацию буду благодарен. |