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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2014, 20:42   #1
Артур30.05
Пользователь
 
Регистрация: 10.11.2014
Сообщений: 13
По умолчанию К серверу не подключаются клиенты?

При вводе имени пользователя и дальнейшем нажатии на кнопку "Подключить", появляется надпись "Подключение успешно", но к серверу никто не подключается. Как сделать, чтобы данные отображались в окне сервера как на первом скриншоте. Какое-то свойство надо задать или связь сделать или нет?
Изображения
Тип файла: jpg Form1.jpg (111.3 Кб, 59 просмотров)
Тип файла: jpg Form2 2014-05-28 14.17.46.jpg (108.2 Кб, 116 просмотров)
Артур30.05 вне форума Ответить с цитированием
Старый 19.11.2014, 21:26   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Какое-то свойство надо задать
Код:
MakeEverythingOk = true;
Кто ж знает что там у вас что в коде? Декомпилировать по скриншотам DotPeek еще не умеет.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 19.11.2014 в 21:30.
Alex11223 вне форума Ответить с цитированием
Старый 19.11.2014, 21:36   #3
Артур30.05
Пользователь
 
Регистрация: 10.11.2014
Сообщений: 13
По умолчанию

Клиент
Код:
namespace ChatClient
{
    public partial class Form1 : Form
    {
        private string UserName = "Unknown";
        private StreamWriter swSender;
        private StreamReader srReceiver;
        private TcpClient tcpServer;
        private delegate void UpdateLogCallback(string strMessage);
        private delegate void CloseConnectionCallback(string strReason);
        private Thread thrMessaging;
        private IPAddress ipAddr;
        private bool Connected;

        public Form1()
        {
            Application.ApplicationExit +=new EventHandler(OnApplicationExit);
            InitializeComponent();
        }

        public void OnApplicationExit(object sender, EventArgs e)
        {
            if (Connected == true)
            {
                Connected = false;
                swSender.Close();
                srReceiver.Close();
                tcpServer.Close();
            }
        }

        private void btnConnect_Click(object sender, EventArgs e)
        {
            if (Connected == false)
            {
                InitializeConnection();
            }
            else
            {
                CloseConnection("Отключен по требованию пользователя");
            }
        }

        private void InitializeConnection()
        {
            ipAddr = IPAddress.Parse(txtIp.Text);
            tcpServer = new TcpClient();
            tcpServer.Connect(ipAddr, 1986);

            Connected = true;
            UserName = txtUser.Text;

            txtIp.Enabled = false;
            txtUser.Enabled = false;
            btnConnect.Text = "Отключить";

            swSender = new StreamWriter(tcpServer.GetStream());
            swSender.WriteLine(txtUser.Text);
            swSender.Flush();

            thrMessaging = new Thread(new ThreadStart(ReceiveMessages));
            thrMessaging.Start();
        }

            private void ReceiveMessages()
            {
                srReceiver = new StreamReader(tcpServer.GetStream());
                string ConResponse = srReceiver.ReadLine();
                if (ConResponse[0] == '1')
                {
                    this.Invoke(new UpdateLogCallback(this.UpdateLog), new object[] { "Подключение успешно" });
                }

                else
                {
                    string Reason = "Не подключен: ";
                    Reason += ConResponse.Substring(2, ConResponse.Length - 2);
                    this.Invoke(new CloseConnectionCallback(this.CloseConnection), new object[] { Reason });
                    return;
                }
                while (Connected)
                {
                    this.Invoke(new UpdateLogCallback(this.UpdateLog), new object[] { srReceiver.ReadLine() });
                }
            }
            private void UpdateLog(string strMessage) 
            {
                txtLog.AppendText(strMessage + "\r\n");
            }
            private void CloseConnection(string Reason)
            {
                txtLog.AppendText(Reason + "\r\n");
                txtIp.Enabled = true;
                txtUser.Enabled = true;
                btnConnect.Text = "Connect";

                Connected = false;
                swSender.Close();
                srReceiver.Close();
                tcpServer.Close();
            }
        }
    }
Артур30.05 вне форума Ответить с цитированием
Старый 20.11.2014, 12:40   #4
Артур30.05
Пользователь
 
Регистрация: 10.11.2014
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Код:
MakeEverythingOk = true;
Кто ж знает что там у вас что в коде? Декомпилировать по скриншотам DotPeek еще не умеет.
Отправил архив. Посмотрите и скажите, что надо для связи сделать.
Вложения
Тип файла: zip C#.zip (104.5 Кб, 9 просмотров)
Артур30.05 вне форума Ответить с цитированием
Старый 21.11.2014, 22:10   #5
qwaker
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 25
По умолчанию

http://msdn.microsoft.com/ru-ru/libr...v=vs.110).aspx
вот тебе клиент-сервер на сокетах, на TCP тоже самое, описано подробно синхронное и асинхронное подключение
qwaker вне форума Ответить с цитированием
Старый 25.11.2014, 21:15   #6
Артур30.05
Пользователь
 
Регистрация: 10.11.2014
Сообщений: 13
По умолчанию

Всё сделал, то что нужно, но когда отправляю файл. Вылазит ошибка "Пустое имя пути не допускается" в 100-ой строке программы клиента, хотя оно не пустое. Help кому не сложно и ссылка на программу https://yadi.sk/d/8g_yiQF_cvvwr
Код:
FileStream fs = new FileStream(txtMessage.Text, FileMode.Open); // ошибка 
            byte[] buffer = new byte[fs.Length];
            int len = (int)fs.Length;
            fs.Read(buffer, 0, len);
            fs.Close();

            BinaryFormatter br = new BinaryFormatter();
            TcpClient myclient = new TcpClient();
            NetworkStream myns = myclient.GetStream();
            br.Serialize(myns, FileName);

            BinaryWriter mysw = new BinaryWriter(myns);
            mysw.Write(buffer);
            mysw.Close();

            myns.Close();
            myclient.Close();
Артур30.05 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не подключаются автоматически модули в дизайнтайме для данных в TPicture DrunkPacifist Компоненты Delphi 3 07.02.2014 12:58
Не подключаются внешние библиотеки sapogan Общие вопросы по Java, Java SE, Kotlin 2 20.11.2013 02:39
не подключаются хедеры STL в Qt Creator SAMOUCHKA Qt и кроссплатформенное программирование С/С++ 5 24.10.2012 20:08
Пожалуйста помогите, не подключаются библиотеки в C feranic Общие вопросы C/C++ 10 20.02.2008 21:08
НЕ видно второй БД, Базы подключаются через bpl. HunterPC БД в Delphi 0 02.11.2007 12:58