Пересылка данных по сети - C#
Формулировка задачи:
Здравствуйте! В приложении я пересылаю данные по сети. Отсылаю сколько передано данных, а потом, например, собственно строку. Но число может быть больше одного байта. Как мне разбирать входящие данные???
Решение задачи: «Пересылка данных по сети»
textual
Листинг программы
using System; using System.Net; using System.Net.Sockets; namespace Fusion { public class TcpReceiver { public TcpReceiver(IPAddress address, int localPort) { TcpListener listener = new TcpListener(address, localPort); listener.Start(); listener.BeginAcceptTcpClient(ListenerConnectedCallback, listener); } ~TcpReceiver() { _client.Close(); } private void ListenerConnectedCallback(IAsyncResult asyncResult) { _client = (asyncResult.AsyncState as TcpListener).EndAcceptTcpClient(asyncResult); _stream = _client.GetStream(); _stream.BeginRead(buffer, 0, buffer.Length, DataReceivedCallback, null); } private void DataReceivedCallback(IAsyncResult asyncResult) { int length = _stream.EndRead(asyncResult); _stream.Flush(); byte[] ni = new byte[length]; Array.Copy(buffer, ni, length); if (length != 0) OnDataReceived(ni); _stream.BeginRead(buffer, 0, buffer.Length, DataReceivedCallback, null); } private byte[] buffer = new byte[512]; private NetworkStream _stream; private TcpClient _client; public event EventHandler<DataReceivedEventArgs> DataReceived; protected virtual void OnDataReceived(byte[] data) { if (DataReceived != null) DataReceived(this, new DataReceivedEventArgs(data)); } public bool Connected { get { return _client == null ? false : _client.Connected; } } } public class DataReceivedEventArgs : EventArgs { public byte[] Data { get; private set; } public DataReceivedEventArgs(byte[] data) { Data = data; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д