Принять входящую команду по TCP - C#

Узнай цену своей работы

Формулировка задачи:

Собственно весь вопрос. Надо написать класс который принимает команду по TCP протоколу.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
 
namespace SARM
{
    class TCP
    {
        public delegate void GetCommandEventHandler(byte[] data);
 
        protected int _port;
        IPEndPoint iep;
        private byte[] data = new byte[1024];
        private int size = 1024;
        private Socket server;
        
        #region Конструктор
        //===============================================================================================
 
        public TCP(int port)
        {
            this._port = port;
            Zapros();
        }
 
        //===============================================================================================
        #endregion

        /// <summary>Получил  команду</summary>
        public event GetCommandEventHandler WasGet;
 
        #region Свойства
        //===============================================================================================
 
        public int port
        {
            get { return _port; }
        }
 
        //===============================================================================================
        #endregion
 
        //===============================================================================================
 
        protected void OnGet(byte[] data)
        {
            if (WasGet != null)
                WasGet(data);
        }
 
        //===============================================================================================
 
        void ReceiveData(IAsyncResult iar)
        {
            Socket client = (Socket)iar.AsyncState;
            int recv = client.EndReceive(iar);
 
            if (recv == 0)
            {
                client.Close();
                server.BeginAccept(new AsyncCallback(AcceptConn), server);
                return;
            }
            client.BeginReceive(data, 0, size, SocketFlags.None,
                        new AsyncCallback(ReceiveData), client);
 
            OnGet(data);
        }
 
        //===============================================================================================
 
        void AcceptConn(IAsyncResult iar)
        {
            Socket oldserver = (Socket)iar.AsyncState;
            Socket client = oldserver.EndAccept(iar);
            client.BeginReceive(data, 0, size, SocketFlags.None, new AsyncCallback(ReceiveData), client);
        }
 
        //===============================================================================================
 
        public virtual void Zapros()//инициализация сокетов
        {
            server = new Socket(AddressFamily.InterNetwork,
                SocketType.Stream, ProtocolType.Tcp);
            iep = new IPEndPoint(IPAddress.Any, port);
            server.Bind(iep);
            server.Listen(1000);
            server.BeginAccept(new AsyncCallback(AcceptConn), server);
        }
 
        //===============================================================================================
 
    }
 
    //===============================================================================================
 
    public class HumanEventArgs
    {
        protected int hp;
        public int port
        {
            get { return hp; }
        }
 
        public HumanEventArgs(int port)
        {
            this.hp = port;
        }
    }
 
    //===============================================================================================
 
    public class GetCommandArgs : HumanEventArgs
    {
        protected int command;
        public int Command
        {
            get { return command; }
            set { command = value; }
        }
 
        //===============================================================================================
 
    public GetCommandArgs(int Command, int port)
            : base(port)
        {
            this.command = Command;
        }
 
        //===============================================================================================
 
    }
}
пробую так...не выходит(

Решение задачи: «Принять входящую команду по TCP»

textual
Листинг программы
if (recv <   14)  { client.BeginReceive(data, 0, 14, SocketFlags.None,
                        new AsyncCallback(ReceiveData), client); }
// else OnGet(data); 
 else Console.WriteLine("Буфер: " + data.Length + " Буфер в байтах: " ......);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.5 из 5