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

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

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

Написал клиент-сервер для передачи файлов. С сетями имею дело в первый раз. В предыдущей версии данной программы разбил на куски прослушку и отправку файла в сервере, и подключение к серверу и прием файла в клиенте. Подключение осуществлялось, но передача файлов нет. В данной версии, не осуществляется даже подключение. Опыта в данном деле нет, поэтому если кто-то сталкивался с подобными задачами и укажет на ошибку, буду очень благодарен. Сервер
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Threading;
using System.Net;
using System.IO;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public string filename;
        TcpClient handler;
        TcpListener sListener;

        public Form1()
        {
            InitializeComponent();
        }

        //Выбор файла и извлечение его имени
        private void browseButton_Click(object sender, EventArgs e)
        {
                using (OpenFileDialog selectfile = new OpenFileDialog())
                {
                    if (selectfile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        LogBox.Text = "Файл выбран";
                        filename = selectfile.FileName;
                    }
                }

        }

        private void Transfer_Click(object sender, EventArgs e)
        {
           // Создаем конечную сетевую точку для прослушивания любого IP и портом 11000
            IPEndPoint myEndpoint = new IPEndPoint(IPAddress.Any, 11000);
            try
            {
                sListener = new TcpListener(myEndpoint);
            
                //Начинаем прослушивание, очередь которого в 100 заявок
                sListener.Start(100);
                LogBox.Text = Environment.NewLine + "Создаем сокет";
                //Обрабатываем запросы подключения к серверу, если имеются принимаем и начинаем работу с сокетом handler
                while (true)
                {
                    Application.DoEvents();
                    if (sListener.Pending())
                    {
                        handler = sListener.AcceptTcpClient();
                        sListener.Stop();
                        LogBox.Text = Environment.NewLine + "Клиент подключен";
                    }
                }
            }
            catch
            {
                LogBox.Text = Environment.NewLine + "Не удалось подключиться к клиенту";
            }
 
            if (handler.Connected)
            {
                //Переводим данные файла в универсальный формат чтения и записи, после в двоичный и получаем данные на клиентский совет
                using (FileStream inputStream = File.OpenRead(filename))
                using (NetworkStream outputStream = handler.GetStream())
                using (BinaryWriter writer = new BinaryWriter(outputStream))
                {
                    long lenght = inputStream.Length;
                    long totalBytes = 0;
                    int readBytes = 0;
                    byte[] buffer = new byte[2048];
 
                    writer.Write(Path.GetFileName(filename));
                    writer.Write(lenght);
 
                    do
                    {
                        readBytes = inputStream.Read(buffer, 0, buffer.Length);
                        outputStream.Write(buffer, 0, readBytes);
                        totalBytes += readBytes;
 
                    } while (handler.Connected && totalBytes < lenght);
                }
                handler.Close();
            }
            }

        private void Cancel_Click(object sender, EventArgs e)
        {
            //Если подключен клиентской сокет, отключаем его
            if (handler.Connected) handler.Close();
            LogBox.Text = Environment.NewLine+"Передача отменена";
        }

    }
    }
Клиент
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.IO;
using System.Net;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        TcpClient client;
        string folder;
        public Form1()
        {
            InitializeComponent();
        }

        private void Cancel_Click(object sender, EventArgs e)
        {
            if (client.Connected) client.Close();
        }

        private void ReceiveFile_Click(object sender, EventArgs e)
        {
            IPHostEntry localMachineInfo = Dns.GetHostEntry(Dns.GetHostName());
            IPEndPoint myEndpoint = new IPEndPoint(localMachineInfo.AddressList[0], 11000);
 
            client = new TcpClient(myEndpoint);
 
            try
            {
                client.Connect(myEndpoint);
                LogBox.Text = Environment.NewLine + "Подключение к серверу";
            }
            catch
            {
                LogBox.Text = Environment.NewLine + "Не удалось подключится к серверу";
            }
 
            if (client.Connected)
            {
 
                using (NetworkStream inputStream = client.GetStream())
                using (BinaryReader reader = new BinaryReader(inputStream))
                {
                    string filename = reader.ReadString();
                    long lenght = reader.ReadInt64();
 
                    using (FileStream outputStream = File.Open(Path.Combine(folder, filename), FileMode.Create))
                    {
                        long totalBytes = 0;
                        int readBytes = 0;
                        byte[] buffer = new byte[2048];
 
                        do
                        {
                            readBytes = inputStream.Read(buffer, 0, buffer.Length);
                            outputStream.Write(buffer, 0, readBytes);
                            totalBytes += readBytes;
 
                        } while (client.Connected && totalBytes < lenght);
                        client.Close();
                    }
                }
            }
        }
 
        private void BrowseButton_Click(object sender, EventArgs e)
        {
            using (folderBrowserDialog1 = new FolderBrowserDialog())
                if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
                   folder = folderBrowserDialog1.SelectedPath;
                   textBox2.Text=folderBrowserDialog1.SelectedPath;
            
        }
 
    }
}

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

textual
Листинг программы
using System;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using CommonTransportLibrary;
 
namespace TestClient
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new SocketClient();
            client.ConnectEvent += (sender, e) => 
            { 
                Console.WriteLine("Сервер доступен!!!");
                using (var networkStream = new NetworkStream(e.Client, FileAccess.ReadWrite))
                {
                    var buffer = new byte[5];
                    networkStream.Read(buffer, 0, 5);
                    Console.Write("Прием: ");
                    buffer.ToList().ForEach(x => Console.Write("{0}, ", x));
                    Console.WriteLine();
                    networkStream.Write(new byte[] {5, 4, 3, 2, 1}, 0, 5);
                    Console.WriteLine("Отправка: 5, 4, 3, 2, 1");
                    Console.ReadLine();
                }
            };
            client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 11000));
        }
    }
}

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


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

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

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