Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
4 / 4 / 2
Регистрация: 03.11.2010
Сообщений: 72
1

Пересылка сообщений по сети

26.01.2011, 02:42. Просмотров 2394. Ответов 4
Метки нет (Все метки)

Доброй всем ночи.
Я пишу на C# не так давно, и захотел написать приложение которое работало бы всети, но не знаю как начать.
Кто-нибудь может выложить\написать код 2 программ сервер и клиент, сервер бы при нажатии кнопки отсылал текстовое сообщение , а клиен бы его принимал. (Конечно если это не трудно)
Я думаю это был бы неплохой пример для начала изучения работы в сети.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.01.2011, 02:42
Ответы с готовыми решениями:

Пересылка данных по сети
Здравствуйте! В приложении я пересылаю данные по сети. Отсылаю сколько передано данных, а потом,...

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

Отправка сообщений пользователям в сети
Пробовал так string command = "/r msg * /server:Admin-PC Тестовое сообщение";...

Пересылка сообщений
Здравствуйте. Пишу программу для пересылки сообщений из одной группы в другую в телеграмме. Все в...

4
14 / 14 / 2
Регистрация: 24.07.2009
Сообщений: 59
26.01.2011, 02:53 2
Сам когда-то пытался зделать lan messenger но без сервера, типо каждая машина и клиент и сервер , но так ничего толкового не получилось.
Может эти ссылки тебе помогут:
простенкий сервер - клиент
чат на .NET, правда код в vb
0
21 / 21 / 6
Регистрация: 16.12.2009
Сообщений: 44
26.01.2011, 10:47 3
в книге "C# 4.0 и платформа .NET 4 для профессионалов" есть глава посвященная этому, в конце этой главы как раз такой примерчик, хотя может и не совсем такой, но что то похожее =) К сожалению этой книги в электронке пока нет, за то есть книжка "C# в подлиннике" в ней тоже целая глава по сетям, и что то подобное тоже было.
Есть еще целая книга посвященная сетям ".NET. Сетевое программирование для профессионалов".
Успехов =)
0
|____WTF!?____|
91 / 90 / 11
Регистрация: 01.06.2010
Сообщений: 227
26.01.2011, 14:34 4
ChatClient.zip
ChatServer.zip
Всё работает прекрасно, если будет программа вылетать, то значит ошибка в server ip, либо файрвол блокирует соединение.
1
4 / 4 / 1
Регистрация: 10.03.2011
Сообщений: 93
17.11.2011, 14:58 5
Вот когда-то писала простейший чатик. Тут приложение хоть и в консольке, но работает четко. Нужно запустить 2 раза, выбрав 1 как сервера, 2 как клиента. Но это так для проверки работы. А вобще пробовала по одно ранговой сети общаться, получилось ))
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
//подключение необходимых пространств имен (ПИ)
using System;               //основные классы .Net
using System.Text;          //ссылка на это ПИ необходима для обращения к классу Encoding
using System.Net;           //средства для работы с сетью .Net
using System.Net.Sockets;   //средства для работы с сокетами .Net
using System.Threading;     //средства для параллельного исполнения программ
 
namespace simpleChat {              //изолируем наш класс от остальных
 
    static class simpleChat {       //static class - работаем в процедурном стиле
 
        //------------------------------------------------------------------------------------------------------
        //общие переменные
        //static string ip = "127.0.0.1";   //IP адрес
        static string ip = "192.168.0.151"; //IP адрес
        static int port = 7000;         //порт
        static bool serverMode;         //режим работы сервер/клиент
        static Socket mySock;           //интерфейсное гнездо
        static Thread reading;          //параллельный поток выполнения для приема данных от корреспондента
 
        //------------------------------------------------------------------------------------------------------
        //начальная процедура 
        static void Main(string [] args) {
 
            if (args.Length > 0) {
                IPAddress ipaddress;
                if (IPAddress.TryParse(args[0], out ipaddress)) ip = args[0];
            }
 
            Console.WriteLine("Это простой чат\nНажмёте клавишу ENTER и станете Сервером. \nНажмёте иное - Клиентом");
            serverMode = (Console.ReadLine() == "");
 
            //создаем новый сокет на сетевом интерфейсе:
            //InterNetwork - используем семейство IP4
            //Stream - работаем с удаленной точкой через установление постоянного соединения
            //Tcp -  используем семейство протоколов Tcp
            mySock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 
            //разница между сервером и клиентом имеется на этапе установления соединения
 
            if (serverMode) {                                                       //в режиме "Сервер" выполняем:
 
                //привязываем сокет на порт port 
                //Any - IP адрес здесь не имеет значения 
                //IPEndPoint(IPAddress.Any, port) - олицетворяет локальную точку (Точка это пара IP-адрес и порт)
                try { mySock.Bind(new IPEndPoint(IPAddress.Any, port)); }
                catch { Console.WriteLine("порт занят (или иное :). press any key "); Console.ReadKey(true); return; }
 
                //включаем прослушивание одного соединения
                mySock.Listen(1);
                Console.WriteLine("Режим сервер. Слушаю порт " + port + " ...");
 
                //дожидаемся инициативы соединения от какого-либо удаленной (внешней) точки.
                mySock = mySock.Accept();
                Console.WriteLine("Принято удаленное соединение " + mySock.RemoteEndPoint);
                Console.WriteLine("(для разрыва соединения введите +++)");
            }
 
            else {                                                                  //в режиме "Клиент" выполняем:
                Console.WriteLine("Режим клиент. Попытки подключения к " + ip + " " + port + " ...");
                while (true) {  //попытки: инициируем соединение с конкретной удаленной точкой
                    try {
                        mySock.Connect(new IPEndPoint(IPAddress.Parse(ip), port));
                        break;  //нас услышали наконец
                    }
                    catch { }   //нас могут и не слушать вовсе
                }
                Console.WriteLine("Режим клиент. Подключился к " + mySock.RemoteEndPoint);
            }
 
            //после установления соединения клиент и сервер ведут себя одинаково:
            reading = new Thread(Reading);  //создаем поток, чтобы отсылка и чтение выполнялись параллельно
            reading.Start();                //запускаем поток чтения данных от корреспондента
            Sending();                      //запускаем ппроцедуру отсылки данных корреспонденту
            mySock.Close();                 //закрываем сокет
        }
 
        //------------------------------------------------------------------------------------------------------
        //процедура передачи
        static void Sending() {
 
            String sendStr;
 
            while (true) {
                Console.Write(">>>");
                sendStr = Console.ReadLine();   //получаем строку с клавиатуры
                if (sendStr == "+++") { Console.WriteLine("\nРазрываю соединение с " + mySock.RemoteEndPoint); break; }
 
                //строку, полученную с клавиатуры отсылаем корреспонденту, предварительно преобразовав в массив байтов
                try { mySock.Send(Encoding.Default.GetBytes(sendStr + "\r\n")); }
                catch { Console.WriteLine("\nУдаленный узел разорвал соединение"); break; }
 
            }
            reading.Abort();    //останавливаем поток чтения данных от корреспондента
        }
 
        //------------------------------------------------------------------------------------------------------
        //процедура приема
        static void Reading() {
            int eolPos;                         //число принятых байт
            Byte[] receiveBuf = new Byte[256];  //буфер приема
 
            while (true) {                      //один виток цикла соответствует приему одной строки от корреспондента
                try { eolPos = mySock.Receive(receiveBuf); }    //принимаем корреспонденцию в буфер приема
                catch { eolPos = 0; }
 
                //обработка момента окончания цикла
                if (eolPos == 0) { Console.WriteLine("\nУдаленный узел не отвечает (нажмите ENTER)"); break; }
                
                //печатаем принятую строку на ленту консоли
                Console.Write("\n<<<" + Encoding.Default.GetString(receiveBuf, 0, eolPos));
            }
        }
    }
}
Комментарии помогут разобраться в чем суть создания простейшего чата
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2011, 14:58

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Пересылка сообщений
Здравствуйте.Еще только начинаю разбираться,вот такой вопрос: Стоит задача из клиентской локальной...

Пересылка сообщений
необходимо что б дочерний процесс переслал сообщение радителю я написал следующее это...

Пересылка сообщений между клиентами
есть сервер class ServeOneJabber extends Thread { private Socket socket; private...

Пересылка сообщений по временному отрезку в outlook 2010
Доброго времени суток! Не могу найти правило, которое сможет пересылать входящие сообщения...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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