Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2019, 10:00   #1
SplinterExpert
Новичок
Джуниор
 
Регистрация: 24.03.2019
Сообщений: 1
По умолчанию Помогите найти причину зависания

Всем привет ребят, выручайте. Есть программа которая создаёт сервер, для скачивания с него файлов, но при запуске она просто виснет, с клиента соответственно подключиться к ней не могу. Может в коде где то накосячил?
Код:
using System;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;

namespace Server
{
    public partial class Server : Form
    {
        public Server()
        {
            InitializeComponent();
        }

        private static byte[] GetIp(string s)
        {
            //получаем ип адрес из строки
            var ss = s.Split('.');
            var res = new[]
            {
                byte.Parse(ss[0]),
                byte.Parse(ss[1]),
                byte.Parse(ss[2]),
                byte.Parse(ss[3])
            };

            return res;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //старт сервера
            button1.Enabled = false;

            //начнем
            // Устанавливаем для сокета локальную конечную точку
            //IPHostEntry ipHost = Dns.GetHostEntry("localhost");
            var ipAddr = new IPAddress(GetIp(tbHost.Text));
            var ipEndPoint = new IPEndPoint(ipAddr, int.Parse(tbPort.Text));

            // Создаем сокет Tcp/Ip
            var sListener = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

            // Назначаем сокет локальной конечной точке и слушаем входящие сокеты
            try
            {
                sListener.Bind(ipEndPoint);
                sListener.Listen(10);

                // Начинаем слушать соединения
                while (true)
                {
                    // Программа приостанавливается, ожидая входящее соединение
                    var handler = sListener.Accept();
                    string data = null;

                    // Мы дождались клиента, пытающегося с нами соединиться
                    var bytes = new byte[1024];
                    var bytesRec = handler.Receive(bytes);

                    data += Encoding.UTF8.GetString(bytes, 0, bytesRec);

                    var dir = Application.ExecutablePath;
                    dir = dir.Remove(dir.Length - 10);

                    if (data == "%r") 
                    {
                        //выслать список файлов
                        var files = Directory.GetFiles(dir + "Upload\\");

                        // Отправляем ответ клиенту
                        var reply = files.Aggregate("", (current, t) => current + (t + ";"));
                        var msg = Encoding.UTF8.GetBytes(reply);
                        handler.Send(msg);
                    }
                    else
                    {
                        //выслать файл
                        dir = dir + "Upload\\" + data;
                        handler.SendFile(dir, null, null, TransmitFileOptions.UseDefaultWorkerThread);
                    }
                    
                    handler.Shutdown(SocketShutdown.Both);
                    handler.Close();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                Console.ReadLine();
            }
        }
    }
}
SplinterExpert вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу найти причину бага CortesGames Общие вопросы C/C++ 9 16.05.2017 15:11
Notice: Undefined index.... Помогите найти причину ошибки Женя32 PHP 4 19.10.2016 16:42
Помочь найти причину drzod Помощь студентам 1 28.02.2013 07:23
помогите найти причину ошибки! НиКС БД в Delphi 3 10.05.2007 15:55