M
met123
Одним словом есть клиентское приложения которое отправляет файлы на сервер
В клиентском приложении все просто
private NetworkStream streamtoserver;
private StreamWriter writer;
public client(string str)
{
TcpClient tcpsocket=new TcpClient (str,65000);
streamtoserver = tcpsocket.GetStream();
writer = new StreamWriter(streamtoserver);
}
потом я отсылаю на сервер через поток writer связанный с сетевым потоком streamtoserver имя файла с этого компа.
public void run(string filename)
{
writer.Write(filename);
writer.Flush();
streamtoserver.Close();
}
На сервере я принимаю через поток связанный с сокетом клиента имя файла (только фрагмент асинхронного чтения):
public void startread()
{
networkstream.BeginRead(buffer, 0, buffer.Length, callbackread, null);
}
private void OnComleteRead(IAsyncResult ar)
{
int bytesread=networkstream.EndRead(ar);
if(bytesread >0)
{
.................
filename = Encoding.UTF8.GetString(buffer, 0, bytesread);
......
}
Потом я связ с этим файлом поток и считую инфу и записую уже в файл на сервере
inputstream = File.OpenRead(filename);
outputstream = File.OpenWrite(ouputfile);
inputstream.BeginRead(buffer, 0, buffer.Length, callbackfile, null);
.................................................
private void OnFileComleteRead(IAsyncResult asyncresult)
{
int bytesread=inputstream.EndRead(asyncresult);
if (bytesread > 0)
{
outputstream.BeginWrite(buffer, 0, buffer.Length, callbackwrite, null);
outputstream.Flush();
}
Но вот я пока данную прогу тестирую на одном компе , использую внутренний айпишник все работает
но когда я буду использовать два компа, мне кажеться, -- тогда когда я передам на сервер имя файл то он тогда будет искать этот файл на сервере а не на клиенте.
Поэтому мне надо как то в клиенте передавать после имени файла и его содержимое в сетевой поток , а потом его считывать на сервере з потока связанного с сокетом клиента.
как это реализовать , или я не прав и все и так будет работать.????
я заметил что только StreamWriter или StreamReader можно связ с сетев потоком:
private StreamWriter writer;
writer = new StreamWriter(streamtoserver);
Но как мне вместо имени файла потом впихнуть в этот поток и его содержимое
writer.Write(filename);
writer.Flush();
Помогите плз или подскажите варианты реализации!!!!!!!!!!!!!!!!!!!
В клиентском приложении все просто
private NetworkStream streamtoserver;
private StreamWriter writer;
public client(string str)
{
TcpClient tcpsocket=new TcpClient (str,65000);
streamtoserver = tcpsocket.GetStream();
writer = new StreamWriter(streamtoserver);
}
потом я отсылаю на сервер через поток writer связанный с сетевым потоком streamtoserver имя файла с этого компа.
public void run(string filename)
{
writer.Write(filename);
writer.Flush();
streamtoserver.Close();
}
На сервере я принимаю через поток связанный с сокетом клиента имя файла (только фрагмент асинхронного чтения):
public void startread()
{
networkstream.BeginRead(buffer, 0, buffer.Length, callbackread, null);
}
private void OnComleteRead(IAsyncResult ar)
{
int bytesread=networkstream.EndRead(ar);
if(bytesread >0)
{
.................
filename = Encoding.UTF8.GetString(buffer, 0, bytesread);
......
}
Потом я связ с этим файлом поток и считую инфу и записую уже в файл на сервере
inputstream = File.OpenRead(filename);
outputstream = File.OpenWrite(ouputfile);
inputstream.BeginRead(buffer, 0, buffer.Length, callbackfile, null);
.................................................
private void OnFileComleteRead(IAsyncResult asyncresult)
{
int bytesread=inputstream.EndRead(asyncresult);
if (bytesread > 0)
{
outputstream.BeginWrite(buffer, 0, buffer.Length, callbackwrite, null);
outputstream.Flush();
}
Но вот я пока данную прогу тестирую на одном компе , использую внутренний айпишник все работает
но когда я буду использовать два компа, мне кажеться, -- тогда когда я передам на сервер имя файл то он тогда будет искать этот файл на сервере а не на клиенте.
Поэтому мне надо как то в клиенте передавать после имени файла и его содержимое в сетевой поток , а потом его считывать на сервере з потока связанного с сокетом клиента.
как это реализовать , или я не прав и все и так будет работать.????
я заметил что только StreamWriter или StreamReader можно связ с сетев потоком:
private StreamWriter writer;
writer = new StreamWriter(streamtoserver);
Но как мне вместо имени файла потом впихнуть в этот поток и его содержимое
writer.Write(filename);
writer.Flush();
Помогите плз или подскажите варианты реализации!!!!!!!!!!!!!!!!!!!