早上好,我一直在尝试根据文件传输找到一些教程,但不幸的是我无法找到一个可以帮助我在聊天期间使其正常工作...有正常的代码,我该如何制作这样,在聊天过程中,其中一个用户可以从服务器端访问下载功能
客户端:
public static void writer()
{
string str;
byte[] data = new byte[1024];
nome = Console.ReadLine();
data = Encoding.ASCII.GetBytes(nome);
client.Send(data, data.Length, SocketFlags.None);
do
{
str = Console.ReadLine();
data = Encoding.ASCII.GetBytes(str);
client.Send(data, data.Length, SocketFlags.None);
} while (str != "exit");
client.Shutdown(SocketShutdown.Both);
tReader.Abort();
client.Close();
}
public static void reader()
{
byte[] data = new byte[1024];
int recv;
while (true)
{
try
{
recv = client.Receive(data);
}
catch (Exception e)
{
Console.WriteLine("Erro: " + e.Message);
Console.ReadLine();
break;
}
Console.WriteLine("\n" + Encoding.ASCII.GetString(data, 0, recv));
}
}
}
}
fileTransfer CLass:
class SistemaFicheiros
{
public void NomeFicheiro(Socket socket)
{
bool validado = false;
while (!validado)
{
string nome, pass = string.Empty;
byte[] perguntaNome = new byte[1024];
string introduzNome = "Introduza o nome do ficheiro.";
perguntaNome = Encoding.ASCII.GetBytes(introduzNome);
socket.Send(perguntaNome);
byte[] dataaux = new byte[1024];
int nBytes;
nBytes = socket.Receive(dataaux);
nome = Encoding.ASCII.GetString(dataaux, 0, nBytes);
if (nome.Equals("test.txt"))
{
validado = true;
IniciarDownloadFicheiro(socket, nome);
}
}
}
public void IniciarDownloadFicheiro(Socket socket, string filename)
{
try
{
string filePath = @"C:\FT\";//Your File Path;
byte[] fileNameByte = Encoding.ASCII.GetBytes(filename);
byte[] fileData = File.ReadAllBytes(filePath + filename);
byte[] clientData = new byte[4 + fileNameByte.Length + fileData.Length];
byte[] fileNameLen = BitConverter.GetBytes(fileNameByte.Length);
fileNameLen.CopyTo(clientData, 0);
fileNameByte.CopyTo(clientData, 4);
fileData.CopyTo(clientData, 4 + fileNameByte.Length);
socket.Send(clientData);
Console.WriteLine("File:{0} has been sent.", filename);
}
catch (Exception ex)
{
Console.WriteLine("File Receiving fail." + ex.Message);
}
}
}
如果我试图在客户端上执行此操作,那会不会发生冲突?因为我只想要让文件接收它或发送到服务器的用户