Получилось передать то, что мне надо. Теперь не могу понять как поставить клиент на постоянный прием. У меня он принимает только 1 раз а потом перестает. Сервер:
| Код | public ServerSocket(IPAddress ipAddress, int port) { _server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); _server.Bind(new IPEndPoint(ipAddress, port)); _server.Listen(20); Console.WriteLine("Wait connection"); Accept(); } private async Task StartSend(int i) { try { CodingImage img = new CodingImage(); var buffer = img.CodingImages("C:\\image\\file"+i+".bmp"); Task<int> senTask = SendAsync.AsyncSend(client, buffer, 0, buffer.Length); } catch(Exception ex) {
} } private async void Accept() { for (int i = 0 ;i<14 ;i++ ) { client = await Task.Factory.FromAsync<Socket>(_server.BeginAccept, _server.EndAccept, true); Console.WriteLine("Connected"); await StartSend(i);
} }
public static Task<int> AsyncSend(this Socket socket, byte[] buffer, int offset, int count) { return Task.Factory.FromAsync<int>( socket.BeginSend(buffer, offset, count, SocketFlags.None, null, socket), socket.EndSend); }
|
Клиент:
| Код | private async void Form1_Load(object sender, EventArgs e) { IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); IPAddress ipAddress = ipHostInfo.AddressList[0]; ClientSocket cs = new ClientSocket(); await cs.Connect(ipAddress, 11000); //await cs.StartRecieve(); } public ClientSocket() { _client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); } public async Task Connect(IPAddress ipAddress, int port) { _client.Connect(ipAddress, port); if (!_client.Connected) { Console.WriteLine("Can't connect"); }else Console.WriteLine("Connected"); int i=0; while(i<14) { await StartRecieve(i); i++; } } public async Task StartRecieve(int i) { try { var buffer = new byte[999999]; //Console.WriteLine("Картинка под номером {0} сохранена", i); buffer2 = await _client.ReceiveTaskAsync(buffer,0,buffer.Length); EncodingImage enc = new EncodingImage(); enc.EncodingImageForRecievedBuffer(buffer, i); Console.WriteLine("Картинка под номером {0} сохранена", i); } catch (Exception ex) { } }
|
|