Вот немного подправил, чтоб соедидение само разрывалось когда файл отправлен. Если не нужно сразу разрывать, то убери using'и (но не забудь что закрывать нужно будет)
- using System;
- using System.IO;
- using System.Net;
- using System.Net.Sockets;
-
- namespace ConsoleApplication9
- {
- class Program
- {
-
- static void Main(string[] args)
- {
- System.Threading.Thread serverThread = new System.Threading.Thread(ServerThread) { IsBackground = true };
- System.Threading.Thread clientThread = new System.Threading.Thread(ClientThread) { IsBackground = true };
- serverThread.Start();
- clientThread.Start();
-
- Console.WriteLine("Press any key to exit");
- Console.ReadLine();
- }
-
- private static void ServerThread()
- {
- TcpListener listener = new TcpListener(IPAddress.Any, 777);
- listener.Start();
- Console.WriteLine("Server: started");
-
- using (TcpClient client = listener.AcceptTcpClient())
- {
- Console.WriteLine("Server: client connected");
-
- using (Stream stream = client.GetStream())
- using (BinaryReader reader = new BinaryReader(stream))
- {
- int fileLength = reader.ReadInt32();
- byte[] fileData = reader.ReadBytes(fileLength);
- File.WriteAllBytes(@"c:\2.rtf", fileData);
- }
- Console.WriteLine("Server: file recived");
- }
- listener.Stop();
- }
-
- private static void ClientThread()
- {
- using (TcpClient client = new TcpClient("localhost", 777))
- {
- Console.WriteLine("Client: conected to server");
- using (Stream stream = client.GetStream())
- using (BinaryWriter writer = new BinaryWriter(stream))
- {
- byte[] fileData = File.ReadAllBytes(@"c:\1.rtf");
- writer.Write(fileData.Length);
- writer.Write(fileData);
- }
- Console.WriteLine("Client: file sent");
- }
- }
- }
- }
Ответить
|