PDA

Просмотр полной версии : Передача фалов


bugrom256
02.05.2010, 14:27
Доброго времени суток!!!!))))

Пишу на C#.
Кто-нить может подсказать как считать текст файла в поток (на сервере) и передать его клиенту, чтобы клиент вывел на экран ?????

ichechen
02.05.2010, 19:52
Закачка
Private Function FUPD(ByVal localFilePath As String, ByVal remoteFilePath As String)
Try
Dim request As WebRequest = WebRequest.Create(http_URL & "/core.php")
request.Method = "POST"
Dim postData As String = "OP=UPD&pr1=" & remoteFilePath & "&pr2=" & File.ReadAllText(localFilePath)
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = postData.Length
Dim dataStream As Stream = request.GetRequestStream()
dataStream.Write(System.Text.Encoding.Default.GetB ytes(postData), 0, System.Text.Encoding.Default.GetBytes(postData).Le ngth)
dataStream.Close()
Dim response As WebResponse = request.GetResponse()
dataStream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()

' If responseFromServer <> Nothing Then MsgBox(responseFromServer)

reader.Close()
dataStream.Close()
response.Close()
catch ex as exception
End Try
End Function


Скачивание
Private Function FDWN(ByVal remoteFilePath As String, ByVal localFilePath As String)
Try
fKiller(localFilePath)
Dim request As WebRequest = WebRequest.Create(http_URL & "\core.php")
request.Method = "POST"
Dim postData As String = "OP=DWN&pr1=" & remoteFilePath & "&pr2=" & localFilePath
Dim byteArray As Byte() = System.Text.Encoding.UTF8.GetBytes(postData)
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = byteArray.Length
Dim dataStream As Stream = request.GetRequestStream()
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
Dim response As WebResponse = request.GetResponse()
dataStream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()

' If responseFromServer <> Nothing Then MsgBox(responseFromServer)

File.WriteAllText(localFilePath, responseFromServer)
reader.Close()
dataStream.Close()
response.Close()
Return True
Catch ex As Exception
Return False
End Try
End Function


Сервер
<?php
$curOp=$_POST['OP'];
$arg_1=$_POST['pr1'];
$arg_2=$_POST['pr2'];

//DO COMPORATION

switch ($curOp)
{
case 'UPD':
echo $arg_1;
$handle = fopen("$arg_1","w");
fclose($handle);
chmod("$arg_1", 0777);
$handle = fopen("$arg_1","a");
fclose($handle);
fwrite($handle,"$arg_2");
echo "Success";
case 'DWN':

if (file_exists($arg_1))
{
echo file_get_contents("$arg_1");
}
break;
}
exit;
?>

Там на VB, с перепиской на C# не возникнет проблем, просто перепиши с учетом синтаксиса C#

ichechen
02.05.2010, 19:55
Сделай Таймеры и задай интервал, чтоб клиент и сервер проверяли хост на наличае новых команд
типа ты отправляешь нужный для вывода файл на хост + файл с командами, где будет написано что и как делать
клиент стучится на хост берет файл с инфой читает команды и выполняет

bugrom256
03.05.2010, 01:40
спасибо )))) но я пишу не Web, а консольное клиент-серверное приложение и мне на КЛИЕНТЕ надо считывать всё то что передал сервер...

ЧТО ИМЕЕМ:
У меня есть TcpServer и TcpClient, работаю с потоками (не с сокетами). Проблема возникает в том, что я не могу определить полный объем передаваемой информации, под который надо бы выделить место на клиентской стороне.