Найти ошибку в коде Клиента для асинхронного I/O - C#

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

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

Доброе время суток. Помогите пожалуйста разобраться и найти ошибку в коде Клиента для асинхронного I/O. При компиляции клиента приложение выводит на экран информацию и сразу же закрывается, а при открытии исполняемого файла выводит ошибку о неизвестном хосте (аналогично и на сервере почему-то), хотя на сервере отображается, что подключение было произведено.
/*Server*/
 
class Server
{
    private IPEndPoint ip;
    private Socket socket;
    private int max_conn = 2;
    private const int port = 11000;
    private ManualResetEvent acceptEvent = new ManualResetEvent(false);
 
    public Server()
    {
        IPHostEntry ipHostInfo = Dns.Resolve("localhost");
        IPAddress ipAddress = ipHostInfo.AddressList[0];
        this.ip = new IPEndPoint(ipAddress, 11000);
        this.socket = new Socket(this.ip.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
        this.Init();
    }
 
    public void Init()
    {
        this.socket.Bind(this.ip);
        this.socket.Listen(this.max_conn);
        this.StartListening();
    }
 
    private void StartListening()
    {
        Console.WriteLine("Server starting...");
        while (true)
        {
            acceptEvent.Reset();
            this.socket.BeginAccept(new AsyncCallback(AcceptCallBack), this.socket);
            acceptEvent.WaitOne();
        }
    }
 
    private void AcceptCallBack(IAsyncResult ar)
    {
        Socket socket = (Socket)ar.AsyncState;
        Socket accept_socket = socket.EndAccept(ar);
        acceptEvent.Set();
        Console.WriteLine("A new connection. IP:port = " + accept_socket.RemoteEndPoint.ToString());
    }
 
    static void Main(string[] args)
    {
        Server server = new Server();
    }
}
 
/*Client*/
 
class Client
    {
    private IPEndPoint ip;
    private Socket client_socket;
    private const int port = 11000;
 
    public Client()
    {
        IPHostEntry ipHostInfo = Dns.Resolve("localhost");
        IPAddress ipAddress = ipHostInfo.AddressList[0];
        this.ip = new IPEndPoint(ipAddress, 11000);
        this.client_socket = new Socket(this.ip.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
        this.Connect();
        this.Disconnect();
    }
 
    public void Connect()
    {
        this.client_socket.BeginConnect(this.ip, new AsyncCallback(ConnectCallBack), this.client_socket);
    }
 
    private void ConnectCallBack(IAsyncResult ar)
    {
        Socket handler = (Socket)ar.AsyncState;
        this.client_socket.EndConnect(ar);
    }
 
    public void Disconnect()
    {
        this.client_socket.BeginDisconnect(false, new AsyncCallback(DisconnectCallBack), this.client_socket);
    }
    private void DisconnectCallBack(IAsyncResult ar)
    {
        Socket handler = ar.AsyncState as Socket;
        handler.EndDisconnect(ar);
        Console.WriteLine("Connection closed");
    }
 
    static void Main(string[] args)
    {
        Client server = new Client();
    }
}

Решение задачи: «Найти ошибку в коде Клиента для асинхронного I/O»

textual
Листинг программы
static void Main(string[] args)
        {
            Server s=new Server();
            Console.ReadKey();
        }

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


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

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

13   голосов , оценка 3.923 из 5
Похожие ответы