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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2015, 12:04   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию Почему не выводится запись в label

Я разбираюсь с сервером и клиентом на TCP. В консоли уже давно все получилось. Теперь решил использовать консольный клиент, а сервер сделать в Windows Forms. Откопал самый банальный код, проще некуда.
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.IO;
 
 
namespace TCP_Client
{
    public partial class TCP_Client : Form
    {
        string IP;
        string Port;
        string Namefile;
        Socket socket;
        EndPoint end;
 
        byte[] buffer = new byte[1024];
 
        public TCP_Client()
        {
            InitializeComponent();
            this.IP = "localhost";
            this.Port = "11000";
            this.Namefile = "name_file";
            // чтобы не ругалось на то, что компоненты формы
            // используются в другом потоке
            Control.CheckForIllegalCrossThreadCalls = false;
 
 
        }
 
        private void TCP_Client_Load(object sender, EventArgs e)
        {
            // инициализация сокета
            socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            // создание параметра для подключения к серверу
            IPAddress ip = IPAddress.Parse(IP);
            IPEndPoint ipe = new IPEndPoint(ip, int.Parse(Port));
            end = (EndPoint)ipe;
            socket.Connect(ipe);
            label2.Text = "Соединение установлено";
 
 
        }
 
        private void btn_Transfer_Click(object sender, EventArgs e)
        {
 
 
            string str = textBox3.Text;
            byte[] buffer = Encoding.Default.GetBytes(str);
            socket.Send(buffer, buffer.Length, 0);
 
 
 
        }
 
        private void btn_Close_Click(object sender, EventArgs e)
        {
            //закрываем сокет
            socket.Close();
            Close();
        }
 
    }
}
Так он запустился, форма появилась, а дальше - ничего. Я так понял, label должен поменяться, ведь происходит сразу же при запуске подключение к сокету. Почему Лейбл у меня не меняется? То есть программа, наверное, даже не подключается к серверу, либо окна не обновляются. Так как я этот вариант откопал на просторах форумов, в нем может быть ошибка. Но посмотрите, пожалуйста, потому что это самый простой код, который я когда-либо видел, вроде проще некуда.
Krasi вне форума Ответить с цитированием
Старый 26.10.2015, 13:31   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Лично мне код не совсем понятен. Ну во-первых тут только клиент.
Лично меня немного удивляет, что^
1) TCP-клиент наследует форму:
2) допустим, TCP-клиенту нужен сокет, порт, адрес сервера, но что за:
Код:
string Namefile;
 EndPoint end;
?
3) label меняется в функции TCP_Client_Load(), а вы ее вызываете?
4) а где вообще этот лейбл создается? - я вот вижу первое упоминание лейбли и тут же использование:
Код:
label2.Text = "Соединение установлено";
ЗЫ. Вообще код ужасен. Нельзя так замешивать GUI, сокеты и т.п., да еще вот с такими костылями:
Код:
// чтобы не ругалось на то, что компоненты формы
// используются в другом потоке
Control.CheckForIllegalCrossThreadCalls = false;
rrrFer вне форума Ответить с цитированием
Старый 26.10.2015, 14:10   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Скорее всего _Load это обработчик события формы. Если автор не забыл подписаться на него.
А label2 видимо в дизайнере создан, он генерирует код в другом файле (*.Designer.cs)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.10.2015, 14:25   #4
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

да я не могу найти нормальный проект для Windows forms. Мне бы хоть сделать, чтобы клиент мог на сервер передавать хоть какие-то данные. Так вот если с этим кодом продолжать - то в label-то заносится текст, а почему я не могу этого наблюдать в программе?
Krasi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему выводится такое значение? (Си) Vimork Помощь студентам 7 05.01.2014 23:40
Не выводится текст в Label vovik93 C# (си шарп) 5 12.10.2012 14:13
Почему ничего не выводится из файла? Alsou93 Общие вопросы C/C++ 1 27.05.2012 02:17
Почему не выводится сообщение? [MI_nor] Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 10.04.2011 21:30