Найти ошибку в коде Клиента для асинхронного 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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д