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