Не удается подключится к серверу. В чем может быть ошибка? - C#

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

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

Написал клиент-сервер для передачи файлов. С сетями имею дело в первый раз. В предыдущей версии данной программы разбил на куски прослушку и отправку файла в сервере, и подключение к серверу и прием файла в клиенте. Подключение осуществлялось, но передача файлов нет. В данной версии, не осуществляется даже подключение. Опыта в данном деле нет, поэтому если кто-то сталкивался с подобными задачами и укажет на ошибку, буду очень благодарен. Сервер
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Net.Sockets;
  10. using System.Threading;
  11. using System.Net;
  12. using System.IO;
  13. namespace WindowsFormsApplication1
  14. {
  15. public partial class Form1 : Form
  16. {
  17. public string filename;
  18. TcpClient handler;
  19. TcpListener sListener;
  20.  
  21. public Form1()
  22. {
  23. InitializeComponent();
  24. }
  25.  
  26. //Выбор файла и извлечение его имени
  27. private void browseButton_Click(object sender, EventArgs e)
  28. {
  29. using (OpenFileDialog selectfile = new OpenFileDialog())
  30. {
  31. if (selectfile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  32. {
  33. LogBox.Text = "Файл выбран";
  34. filename = selectfile.FileName;
  35. }
  36. }
  37.  
  38. }
  39.  
  40. private void Transfer_Click(object sender, EventArgs e)
  41. {
  42. // Создаем конечную сетевую точку для прослушивания любого IP и портом 11000
  43. IPEndPoint myEndpoint = new IPEndPoint(IPAddress.Any, 11000);
  44. try
  45. {
  46. sListener = new TcpListener(myEndpoint);
  47. //Начинаем прослушивание, очередь которого в 100 заявок
  48. sListener.Start(100);
  49. LogBox.Text = Environment.NewLine + "Создаем сокет";
  50. //Обрабатываем запросы подключения к серверу, если имеются принимаем и начинаем работу с сокетом handler
  51. while (true)
  52. {
  53. Application.DoEvents();
  54. if (sListener.Pending())
  55. {
  56. handler = sListener.AcceptTcpClient();
  57. sListener.Stop();
  58. LogBox.Text = Environment.NewLine + "Клиент подключен";
  59. }
  60. }
  61. }
  62. catch
  63. {
  64. LogBox.Text = Environment.NewLine + "Не удалось подключиться к клиенту";
  65. }
  66. if (handler.Connected)
  67. {
  68. //Переводим данные файла в универсальный формат чтения и записи, после в двоичный и получаем данные на клиентский совет
  69. using (FileStream inputStream = File.OpenRead(filename))
  70. using (NetworkStream outputStream = handler.GetStream())
  71. using (BinaryWriter writer = new BinaryWriter(outputStream))
  72. {
  73. long lenght = inputStream.Length;
  74. long totalBytes = 0;
  75. int readBytes = 0;
  76. byte[] buffer = new byte[2048];
  77. writer.Write(Path.GetFileName(filename));
  78. writer.Write(lenght);
  79. do
  80. {
  81. readBytes = inputStream.Read(buffer, 0, buffer.Length);
  82. outputStream.Write(buffer, 0, readBytes);
  83. totalBytes += readBytes;
  84. } while (handler.Connected && totalBytes < lenght);
  85. }
  86. handler.Close();
  87. }
  88. }
  89.  
  90. private void Cancel_Click(object sender, EventArgs e)
  91. {
  92. //Если подключен клиентской сокет, отключаем его
  93. if (handler.Connected) handler.Close();
  94. LogBox.Text = Environment.NewLine+"Передача отменена";
  95. }
  96.  
  97. }
  98. }
Клиент
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Net.Sockets;
  10. using System.IO;
  11. using System.Net;
  12. namespace WindowsFormsApplication1
  13. {
  14. public partial class Form1 : Form
  15. {
  16. TcpClient client;
  17. string folder;
  18. public Form1()
  19. {
  20. InitializeComponent();
  21. }
  22.  
  23. private void Cancel_Click(object sender, EventArgs e)
  24. {
  25. if (client.Connected) client.Close();
  26. }
  27.  
  28. private void ReceiveFile_Click(object sender, EventArgs e)
  29. {
  30. IPHostEntry localMachineInfo = Dns.GetHostEntry(Dns.GetHostName());
  31. IPEndPoint myEndpoint = new IPEndPoint(localMachineInfo.AddressList[0], 11000);
  32. client = new TcpClient(myEndpoint);
  33. try
  34. {
  35. client.Connect(myEndpoint);
  36. LogBox.Text = Environment.NewLine + "Подключение к серверу";
  37. }
  38. catch
  39. {
  40. LogBox.Text = Environment.NewLine + "Не удалось подключится к серверу";
  41. }
  42. if (client.Connected)
  43. {
  44. using (NetworkStream inputStream = client.GetStream())
  45. using (BinaryReader reader = new BinaryReader(inputStream))
  46. {
  47. string filename = reader.ReadString();
  48. long lenght = reader.ReadInt64();
  49. using (FileStream outputStream = File.Open(Path.Combine(folder, filename), FileMode.Create))
  50. {
  51. long totalBytes = 0;
  52. int readBytes = 0;
  53. byte[] buffer = new byte[2048];
  54. do
  55. {
  56. readBytes = inputStream.Read(buffer, 0, buffer.Length);
  57. outputStream.Write(buffer, 0, readBytes);
  58. totalBytes += readBytes;
  59. } while (client.Connected && totalBytes < lenght);
  60. client.Close();
  61. }
  62. }
  63. }
  64. }
  65. private void BrowseButton_Click(object sender, EventArgs e)
  66. {
  67. using (folderBrowserDialog1 = new FolderBrowserDialog())
  68. if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
  69. folder = folderBrowserDialog1.SelectedPath;
  70. textBox2.Text=folderBrowserDialog1.SelectedPath;
  71. }
  72. }
  73. }

Решение задачи: «Не удается подключится к серверу. В чем может быть ошибка?»

textual
Листинг программы
  1. using System;
  2. using System.IO;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Net.Sockets;
  6. using CommonTransportLibrary;
  7.  
  8. namespace TestClient
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             var client = new SocketClient();
  15.             client.ConnectEvent += (sender, e) =>
  16.             {
  17.                 Console.WriteLine("Сервер доступен!!!");
  18.                 using (var networkStream = new NetworkStream(e.Client, FileAccess.ReadWrite))
  19.                 {
  20.                     var buffer = new byte[5];
  21.                     networkStream.Read(buffer, 0, 5);
  22.                     Console.Write("Прием: ");
  23.                     buffer.ToList().ForEach(x => Console.Write("{0}, ", x));
  24.                     Console.WriteLine();
  25.                     networkStream.Write(new byte[] {5, 4, 3, 2, 1}, 0, 5);
  26.                     Console.WriteLine("Отправка: 5, 4, 3, 2, 1");
  27.                     Console.ReadLine();
  28.                 }
  29.             };
  30.             client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 11000));
  31.         }
  32.     }
  33. }

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


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

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

9   голосов , оценка 4.222 из 5

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

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

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