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

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

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

Доброе время суток. Помогите пожалуйста разобраться и найти ошибку в коде Клиента для асинхронного I/O. При компиляции клиента приложение выводит на экран информацию и сразу же закрывается, а при открытии исполняемого файла выводит ошибку о неизвестном хосте (аналогично и на сервере почему-то), хотя на сервере отображается, что подключение было произведено.
Листинг программы
  1. /*Server*/
  2. class Server
  3. {
  4. private IPEndPoint ip;
  5. private Socket socket;
  6. private int max_conn = 2;
  7. private const int port = 11000;
  8. private ManualResetEvent acceptEvent = new ManualResetEvent(false);
  9. public Server()
  10. {
  11. IPHostEntry ipHostInfo = Dns.Resolve("localhost");
  12. IPAddress ipAddress = ipHostInfo.AddressList[0];
  13. this.ip = new IPEndPoint(ipAddress, 11000);
  14. this.socket = new Socket(this.ip.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
  15. this.Init();
  16. }
  17. public void Init()
  18. {
  19. this.socket.Bind(this.ip);
  20. this.socket.Listen(this.max_conn);
  21. this.StartListening();
  22. }
  23. private void StartListening()
  24. {
  25. Console.WriteLine("Server starting...");
  26. while (true)
  27. {
  28. acceptEvent.Reset();
  29. this.socket.BeginAccept(new AsyncCallback(AcceptCallBack), this.socket);
  30. acceptEvent.WaitOne();
  31. }
  32. }
  33. private void AcceptCallBack(IAsyncResult ar)
  34. {
  35. Socket socket = (Socket)ar.AsyncState;
  36. Socket accept_socket = socket.EndAccept(ar);
  37. acceptEvent.Set();
  38. Console.WriteLine("A new connection. IP:port = " + accept_socket.RemoteEndPoint.ToString());
  39. }
  40. static void Main(string[] args)
  41. {
  42. Server server = new Server();
  43. }
  44. }
  45. /*Client*/
  46. class Client
  47. {
  48. private IPEndPoint ip;
  49. private Socket client_socket;
  50. private const int port = 11000;
  51. public Client()
  52. {
  53. IPHostEntry ipHostInfo = Dns.Resolve("localhost");
  54. IPAddress ipAddress = ipHostInfo.AddressList[0];
  55. this.ip = new IPEndPoint(ipAddress, 11000);
  56. this.client_socket = new Socket(this.ip.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
  57. this.Connect();
  58. this.Disconnect();
  59. }
  60. public void Connect()
  61. {
  62. this.client_socket.BeginConnect(this.ip, new AsyncCallback(ConnectCallBack), this.client_socket);
  63. }
  64. private void ConnectCallBack(IAsyncResult ar)
  65. {
  66. Socket handler = (Socket)ar.AsyncState;
  67. this.client_socket.EndConnect(ar);
  68. }
  69. public void Disconnect()
  70. {
  71. this.client_socket.BeginDisconnect(false, new AsyncCallback(DisconnectCallBack), this.client_socket);
  72. }
  73. private void DisconnectCallBack(IAsyncResult ar)
  74. {
  75. Socket handler = ar.AsyncState as Socket;
  76. handler.EndDisconnect(ar);
  77. Console.WriteLine("Connection closed");
  78. }
  79. static void Main(string[] args)
  80. {
  81. Client server = new Client();
  82. }
  83. }

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

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

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


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

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

13   голосов , оценка 3.923 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы