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

Приложение tcp/ip, прикладной протокол

04.11.2016, 16:47. Показов 5464. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня появилось задание, где нужно разработать прикладной протокол для обмена текстовыми сообщениями на основе протокола TCP. Создать приложение, обеспечивающее передачу текстовых сообщений произвольному адресату в сети и их приём с указанием сетевого адреса отправителя с использованием протокола TCP. Приложение должно иметь возможность работать и как клиент, и как сервер.
Также нужно потом в отдельном приложении добавить возможность отправки файлов
Посоветуйте материалы, видео либо по сетевому программированию, так как в этой области я тупой,а лабораторную делать нужно. Все просмотренные мной материалы или видео, не то. В одних разделяют на 2 отдельных приложения(Клиент и сервер), в других не разрабатывают протокола.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.11.2016, 16:47
Ответы с готовыми решениями:

Протокол TCP/IP
Здравствуйте.Посылаю сообщение на сервер с помощью: Socket sender = new Socket(ipAddr.AddressFamily, SocketType.Stream,...

Протокол TCP. Передать число с клиента на сервер
Привет всем. Нужно передать число с клиента на сервер, чтобы возвращался синус этого числа. Код клиента: using System; using...

Как происходит получение данных через протокол TCP
Имеется клиент-серверное приложение: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

7
0 / 0 / 1
Регистрация: 24.04.2015
Сообщений: 132
04.11.2016, 16:52
А каким образом клиент будет работать как сервер ?
Вообще передача данных осуществляется через сокеты,читайте про них.
Но у меня сейчас задача стоит как у вас ,мне посоветовали использовать WCF сервис,он гораздо удобнее и легче,я сейчас реализовываю такую же задачу через него
0
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
04.11.2016, 18:12  [ТС]
Ну я думаю так: программа на каждом компьютере способна отправлять и принимать пакет данных. Т.е по сути нет сервера так такого
Вот само задание
0
 Аватар для fufel
20 / 20 / 6
Регистрация: 28.02.2011
Сообщений: 535
04.11.2016, 19:45
На
Когда я только начал этим заниматъся мне помогла эта статья (Там же можно надыбать и рабочий пример).
А дальше искал по факту.

Добавлено через 3 минуты
Тык
Я задовал почти такой же вопрос и получил хороший ответ.
0
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
05.11.2016, 12:24  [ТС]
В частности нужно создать чат 1 к 1, т.е что-то приватного чата, которое подключается по ip адресу и порту
Пакет я вроде создал, вот как остальное бы реализовать
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
 
namespace ChatAppTCP
{
    //структура пакета
    //------------------------------
    //Описание ->      |DataIdentifier|name length|message length|name        |message        |
    //Размер в байтах->|    4         |     4     |      4       | name lenght| message length|
    public enum DataIdentifier
    {
        Message,
        LogIn,
        LogOut,
        Null
    }
    public class Packet
    {
        #region Поля
        private DataIdentifier dataidentifier;
        private string name;
        private string message;
        #endregion
 
        #region Свойства
        public DataIdentifier ChatDataIdentifier
        {
            get { return dataidentifier; }
            set { dataidentifier = value; }
        }
 
        public string ChatName
        {
            get { return name; }
            set { name = value; }
        }
         public string ChatMessage
        {
            get { return message; }
            set { message = value; }
        }
        #endregion
 
        #region Методы
 
        // Конструктор по умолчанию
        public Packet()
        {
            this.dataidentifier = DataIdentifier.Null;
            this.message = null;
            this.name = null;
        }
 
        public Packet(byte[] dataStream)
        {
            //Чтение идентификатора данных от начала потока(4 байта)
            this.dataidentifier = (DataIdentifier)BitConverter.ToInt32(dataStream, 0);
 
            //Чтение длины имени(4 байта)
            int nameLenght = BitConverter.ToInt32(dataStream, 4);
 
            //чтение длины сообщения(4 байта)
            int messageLenght = BitConverter.ToInt32(dataStream, 8);
 
            //чтение имени
            if (nameLenght > 0)
                this.name = Encoding.UTF8.GetString(dataStream, 12, nameLenght);
            else
                this.message = null;
 
            //чтение сообщения
            if (messageLenght > 0)
                this.message = Encoding.UTF8.GetString(dataStream, 12 + nameLenght, messageLenght);
            else
                this.message = null;
        }
 
        //Конвертирование пакета в массив байтов для отправки/ получения
        public byte[] GetDataStream()
        {
            List<byte> dataStream = new List<byte>();
 
            //Добавление dataIdentifier
            dataStream.AddRange(BitConverter.GetBytes((int)this.dataidentifier));
 
            //Добавление длины имени
            if (this.name != null)
                dataStream.AddRange(BitConverter.GetBytes(this.name.Length));
            else
                dataStream.AddRange(BitConverter.GetBytes(0));
 
            //Добавление имени
            if (this.name != null)
                dataStream.AddRange(Encoding.UTF8.GetBytes(this.name));
 
            //Добавление сообщения
            if (this.message != null)
                dataStream.AddRange(Encoding.UTF8.GetBytes(this.message));
 
            return dataStream.ToArray();
        }
        #endregion
 
    }
}
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
05.11.2016, 12:53
danilshik, посмотрите прикрепленный проект в архиве. Это полноценный чат, правда он на HTTP, но на TCP переделать не трудно.
Вложения
Тип файла: rar HttpChatDemo.rar (50.3 Кб, 56 просмотров)
0
0 / 0 / 1
Регистрация: 24.04.2015
Сообщений: 132
05.11.2016, 15:18
insite2012, А возможно ли реализовать такое без сокетов,если я к примеру буду рассматривать пользователей не как массив сокетов,а как массив подключённых сессий,и делать рассылку по сессиям ?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
05.11.2016, 15:34
Цитата Сообщение от Inomezi Посмотреть сообщение
возможно ли реализовать такое без сокетов
А вы видите у меня в коде использование сокетов?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.11.2016, 15:34
Помогаю со студенческими работами здесь

Tcp протокол
Есть программа которая состоит из сервера и клиента, отправляет сообщение по tcp протоколу. Но в задании написано разработать прикладной...

Свой протокол поверх TCP
Есть задача. Нужно написать клинт - серверное приложение которое работает на основе специализированного протокола поверх TCP. Есть ТЗ где...

Вывод изображения через TCP\IP протокол
Всем привет ! У кого-нибудь есть примеры того, как получать видео, передаваемое посредством сетевого протокола TCP\IP ? У меня есть...

Обмен сообщениями через протокол Tcp
Приветствую, форумчане! Христос Воскресе!:) Собственно, задание: Напишите программу, которая при запуске устанавливает TCP соединение...

Изменить в настройках сети протокол интернета (TCP/IP)
Может кто подскажет, можно ли с помощью Си шарп изменить программно в настройках сети протокол интернета (TCP/IP)


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru