Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 07.05.2011
Сообщений: 11

Клиент-сервер - не работает обмен сообщениями

07.05.2011, 12:18. Показов 2127. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте форумчане. Делаю диплом, программа мессенджер. Есть сервер, есть клиент(ниже). Суть проблемы - не отправляет сообщение, в ошибках вроде бы не показывает, но когда запускаеш и отправляеш, то выскакивает error. Пожалуйста, помогите кто чем сможет

Клиент(Form2 - окно сообщений)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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;
using System.Net.Sockets;
 
namespace TCPclient
{
    public partial class Chat : Form
    {
        public Chat()
        {
            InitializeComponent();
        }
        private void SendButton_Click(object sender, EventArgs e)
        {
            string data;
            byte[] remdata = { };
            TcpClient Client = new TcpClient();
            Socket Sock = Client.Client;
            while (true)
            {
                data = msgtext.Text;
                if (data == "exit")
                {
                    Sock.Close();
                    Client.Close();
                    this.Close();
                }
                Sock.Send(Encoding.ASCII.GetBytes(data));
                Sock.Receive(remdata);
                Logicht.Text = "\r\nMsg: " + Encoding.ASCII.GetString(remdata);
            }
 
        }
 
        private void Chat_Load(object sender, EventArgs e)
        {
 
        }
    }
}
сервер(консоль)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Threading;
 
namespace server
{
    class Program
    {
        static void Main(string[] args)
        {
            string cmd;
            Console.Write("Port to listen: ");
            int port = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Creating server...");
            Server Serv = new Server(); // Создаем новый экземпляр класса 
            // сервера
            Serv.Create(port);
 
            while (true)
            {
                cmd = Console.ReadLine(); // Ждем фразы EXIT когда 
                // понадобится выйти из приложения.
                // типа интерактивность.
                if (cmd == "EXIT")
                {
                    Serv.Close(); // раз выход – значит выход. Серв-нах.
                    return;
                }
            }
        }
 
        public class Server // класс сервера.
        {
            private int LocalPort;
            private Thread ServThread; // экземпляр потока
            TcpListener Listener; // листенер))))
 
            public void Create(int port)
            {
                LocalPort = port;
                ServThread = new Thread(new ThreadStart(ServStart));
                ServThread.Start(); // запустили поток. Стартовая функция – 
                // ServStart, как видно выше
            }
 
            public void Close() // Закрыть серв?
            {
                Listener.Stop();
                ServThread.Abort();
                return;
            }
 
            private void ServStart()
            {
                Socket ClientSock; // сокет для обмена данными.
                string data;
                byte[] cldata = new byte[1024]; // буфер данных
                Listener = new TcpListener(LocalPort);
                Listener.Start(); // начали слушать
                Console.WriteLine("Waiting connections [" + Convert.ToString(LocalPort) + "]...");
                try
                {
                    ClientSock = Listener.AcceptSocket(); // пробуем принять 
                    // клиента
                }
                catch
                {
                    ServThread.Abort(); // нет – жаль(
                    return;
                }
                int i = 0;
 
                if (ClientSock.Connected)
                {
                    while (true)
                    {
                        try
                        {
                            i = ClientSock.Receive(cldata); // попытка чтения 
                            // данных
                        }
                        catch
                        {
                        }
 
                        try
                        {
                            if (i > 0)
                            {
 
                                data = Encoding.ASCII.GetString(cldata).Trim();
                                Console.WriteLine("<" + data);
                                if (data == "CLOSE") // если CLOSE – 
                                // вырубимся
                                {
                                    ClientSock.Send(Encoding.ASCII.GetBytes("Closing the server..."));
                                    ClientSock.Close();
                                    Listener.Stop();
                                    Console.WriteLine("Server closed. Reason: client wish! Type EXIT to quit the application.");
                                    ServThread.Abort();
                                    return;
                                }
                                else
                                { // нет – шлем данные взад.
                                    ClientSock.Send(Encoding.ASCII.GetBytes(data));
                                }
                            }
                        }
                        catch
                        {
                            ClientSock.Close(); // ну эт если какая хрень..
                            Listener.Stop();
                            Console.WriteLine("Server closing. Reason: client offline. Type EXIT to quit the application.");
                            ServThread.Abort();
                        }
                    }
                }
            }
        }
    }
}
И ещё простенький вопросик(ламерский ) - ничего, что сервер на консоли, а клиент на форме?))

P.S. сорри если не туда тему кинул, ненашёл куда)) новичок)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.05.2011, 12:18
Ответы с готовыми решениями:

Клиент-сервер, обмен объектами
Клиент-серверное приложение. На сервере есть объекты класа A и класа B. Сервер серелизует один из объектов в набор байт и отправляет...

Tcp Сервер - Клиент обмен данными
Ситуация такая: есть Tcp клиент и сервер для xna игры. Реализован обмен объектами, которые содержатся в единой библиотеке. Объекты...

Soap: php сервер, C# клиент. Обмен массивами
Основной проект написан на php. пот ТЗ необходимо написать веб-сервис, использующий soap. сервер был написан, xsd - валидация, передача...

2
 Аватар для Kayak
10 / 10 / 1
Регистрация: 02.04.2011
Сообщений: 95
07.05.2011, 13:41
Весь сервер один к одному спизжен - труъ студент.
А в клиенте не вижу порта.
0
0 / 0 / 0
Регистрация: 07.05.2011
Сообщений: 11
07.05.2011, 18:43  [ТС]
Ну сервер да.......извеняюсь.........а за клиент спс

А вообще подключение в другой форме)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.05.2011, 18:43
Помогаю со студенческими работами здесь

Java клиент, PHP сервер. Обмен сообщениями
Здравствуйте, товарищи формучане Попал в затруднительное положение, помогите советом\наставлением. В общем, имеется клиент на Java,...

Не идет обмен сообщениями между клиент - сервер
клиент и сервер устанавливают соединение, но сообщения не передаются прошу пожалуйста помочь умнейших в этом сервер ...

Обмен сообщениями в клиент-серверном приложении.
Ситуация: Пишу на Delphi 7. БД на MS SQL 2000. В случае, если у одного из пользователей возникает необходимость редактировать таблицу...

Обмен сообщениями / приложение - сервер
Добрый день! Нужен совет по организации обмена сообщениями / приложение - сервер / Пишу приложение прохождения теста,загружаемых с БД...

Клиент - сервер, обмен данными
Нужно от Client передать данные(номер тел) на Server а обратно вернуть пакет с другими данными. Какие способы есть чтобы сделать это в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru