Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C# Создать новый поток для Udp подключения http://www.cyberforum.ru/csharp-net/thread1055813.html
Очень давно писал серверно-клиентское приложение на сокетах, тогда использовал Tcp прокол. И для каждого нового клиентского подключения создавал в отдельном потоке отдельный обработчик сообщений. Как...
Ускорить вызов события C#
Существует высокоскоростной метод который каждый такт вызывает событие типа: public delegate void MyEvent(double Procent); public event MyEvent Procent; Проблема в том что один только...
Автозаполнение страницы с иерархической структурой C#
Допустим есть сайт. На нём есть комбобокс. Взависимости от значения комбобокса появляются различные формы с другими комбобоксами итд, по иерархии. Вопрос: Как проще всего реализовать автозаполнение...
C# Подскажите элегантный подход Здравствуйте. Предлагаю пример моей реализации. Далее попрошу дать совет по улучшению. interface ISaveRead { public void Save(BinaryWriter bw); public... http://www.cyberforum.ru/csharp-net/thread1055500.html
C# Кракозябры при использовании службы windows http://www.cyberforum.ru/csharp-net/thread1055141.html
Добрый день всем! Прошу помощи в хитром вопросе. Один и тот же код реализован в виде консоли и службы windows. Код вызывает COM-сервер, который считывает данные из некоторого бинарного файла и...
Реально ли сделать связку с Qt для обеспечения кроссплатформенности C#
Имею приложение, написанное на С#, реально ли сделать связку с Qt для обеспечения кроссплатформенности? Есть ли удачные прецеденты?..)
Клиент-сервер по интернету. Какой IP указать для сервера, если ПК - в общежитии с 1 роутером C#
Здравствуйте не знаю тут ли задавать этот вопрос. У меня в общежитии на всех компах один IP и в комнате стоит маршрутизатор. Я например создал простенький сервер на Sockets, а клиенты от этого...
C# Современные технологии доступа к удаленному DCOM Доброго времени суток уважаемые форумчане. Есть задача подключиться к удаленному компьютеру по DCOM, какие сейчас существуют современные технологии облегчающие эти задачи? Самая основная проблема... http://www.cyberforum.ru/csharp-net/thread1054471.html
C# Сравнение звукового файла с образцом http://www.cyberforum.ru/csharp-net/thread1054430.html
Нужно сравнить некий звуковой файл с имеющимся образцом и понять идентичны они или нет. Побитовое сравнение не подходит. Файлы могут быть разной длины и качества (песни). Подскажите , плиз. куда...
C# Конвертирование HTML документа в XML Хелп плиз!! Срочно!!! Подскажите и покажите, какими способами можно легко конвертнуть HTML документ в XML? На c# Заранее спасибо:) http://www.cyberforum.ru/csharp-net/thread1054193.html
Yukikaze
341 / 320 / 49
Регистрация: 12.12.2011
Сообщений: 563
29.12.2013, 10:10 0

Клиент-сервер. Как в многопользовательском чате реализовать личные сообщения

29.12.2013, 10:10. Просмотров 1301. Ответов 8
Метки (Все метки)

Ответ

Вот простой пример сервера, если список соединений заменить на словарь будет даже лучше.
Сервер не обрабатывает исключений и дисконектов, в этом вам придется разбираться самому
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
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
 
namespace TcpServerExample
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpServer server = new TcpServer(8888);
            server.Listen();
 
            Console.ReadKey(true);
        }
 
        
    }
 
    class TcpServer
    {
        private readonly TcpListener _listener;
        
        public int Port { get; set; }
        public List<Connection> Connections { get; set; }
 
        public TcpServer(int port)
        {
            Port = port;
            var endPoint = new IPEndPoint(IPAddress.Any, port);
            _listener = new TcpListener(endPoint);
        }
 
        private void listener_OnAccept(IAsyncResult ar)
        {
            TcpClient client = _listener.EndAcceptTcpClient(ar);
 
            Connection connection = new Connection(client);
            Connections.Add(connection);
 
            _listener.BeginAcceptTcpClient(listener_OnAccept, null);
        }
 
        public void Listen()
        {
            _listener.Start();
            _listener.BeginAcceptTcpClient(listener_OnAccept, null);
        }
    }
 
    class Connection
    {
        private readonly NetworkStream _stream;
        public IPEndPoint EndPoint { get; set; }
        public Connection(TcpClient client)
        {
            _stream = client.GetStream();
            EndPoint = (IPEndPoint)client.Client.RemoteEndPoint;
        }
 
        public void Send(byte[] data)
        {
            _stream.Write(data, 0, data.Length);
        }
    }
}


Вернуться к обсуждению:
Клиент-сервер. Как в многопользовательском чате реализовать личные сообщения
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2013, 10:10
Готовые ответы и решения:

Клиент-Сервер: как реализовать
Во общем есть Сервер на Ansi-C Задача:нужно написать клиента C# Данные поступают в...

Клиент - Сервер. Вечное ожидание сообщения
Грубый набросок. 1)Первый случай Клиент: TcpClient client = new TcpClient(); ...

Клиент-сервер: форма закрывается после второй отправки сообщения
В клиенте 2 формы. 1ая форма соединяется с сервером Создал класс Client cl.Start(IpTextBox.Text,...

Можно ли реализовать сервер и клиент в одном приложении
Вот пишу программу, обмена сообщениями между 2 приложениями. Хочу сделать что бы каждое приложение...

Клиент-Сервер: приватные сообщения в чате
Добрый вечер форумчане. Делая приложения Клиент-Сервер на чистых сокетах, столкнулся с несколькими...

8
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru