Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создаю Чат (простенький), Как юзать UDp Socket ? 
:(
    Опции темы
[RS]ZloY
Дата 28.11.2004, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 14.5.2004
Где: RussiA [AiuR]

Репутация: нет
Всего: нет



Хочу создать чат ,что то типа Lanchat(если кто знаком)

Как мне передовать сообщения считанные в Строке по UDP(Его Я выбрал изза скорости)
Приетом в проге должны быть совмещены как клиентская часть так и серверная .?

PM MAIL   Вверх
AntonSaburov
Дата 29.11.2004, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 118



1. Разработать протокол на базе UDP (поверх UDP)
2. Создать тред, который будет слушать какой-нибудь порт, парсить приходящий ответ и каким-либо оразом обрабатывать его (показывать, складывать в лог или еще что)
3. Создать само собой и клиентский тред, который будет отсылать подготовленные ответы.
PM MAIL WWW ICQ   Вверх
Gazon
Дата 9.1.2005, 20:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 9.1.2005

Репутация: 3
Всего: 8



В интернете достаточно примеров по программированию сокетов. В .NET даже есть вспомогательные классы, где о сокетах почти не приходится думать: например, UDPListener
Примеры TCP клиента и сервера(под UDP переделать не сложно)

Клиент:
Код
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class SimpleTcpClient
{
 public static void Main()
 {
  byte[] data = new byte[1024];
  string input, stringData;
  IPEndPoint ipep = new IPEndPoint(
          IPAddress.Parse("127.0.0.1"), 9050);
  Socket server = new Socket(AddressFamily.InterNetwork,
          SocketType.Stream, ProtocolType.Tcp);
  try
  {
    server.Connect(ipep);
  } catch (SocketException e)
  {
    Console.WriteLine("Unable to connect to server.");
    Console.WriteLine(e.ToString());
    return;
  }
  int recv = server.Receive(data);
  stringData = Encoding.ASCII.GetString(data, 0, recv);
  Console.WriteLine(stringData);
  while(true)
  {
    input = Console.ReadLine();
    if (input == "exit")
     break;
    server.Send(Encoding.ASCII.GetBytes(input));
    data = new byte[1024];
    recv = server.Receive(data);
    stringData = Encoding.ASCII.GetString(data, 0, recv);
    Console.WriteLine(stringData);
  }
  Console.WriteLine("Disconnecting from server...");
  server.Shutdown(SocketShutdown.Both);
  server.Close();
 }
}


Сервер:

Код

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class SimpleTcpSrvr
{
 public static void Main()
 {
  int recv;
  byte[] data = new byte[1024];
  IPEndPoint ipep = new IPEndPoint(IPAddress.Any,
              9050);
  Socket newsock = new
    Socket(AddressFamily.InterNetwork,
          SocketType.Stream, ProtocolType.Tcp);
  newsock.Bind(ipep);
  newsock.Listen(10);
  Console.WriteLine("Waiting for a client...");
  Socket client = newsock.Accept();
  IPEndPoint clientep =
         (IPEndPoint)client.RemoteEndPoint;
  Console.WriteLine("Connected with {0} at port {1}",
          clientep.Address, clientep.Port);
 
  string welcome = "Welcome to my test server";
  data = Encoding.ASCII.GetBytes(welcome);
  client.Send(data, data.Length,
           SocketFlags.None);
  while(true)
  {
    data = new byte[1024];
    recv = client.Receive(data);
    if (recv == 0)
     break;
 
    Console.WriteLine(
        Encoding.ASCII.GetString(data, 0, recv));
    client.Send(data, recv, SocketFlags.None);
  }
  Console.WriteLine("Disconnected from {0}",
           clientep.Address);
  client.Close();
  newsock.Close();
 }
}




--------------------
Чем больше узнаешь, тем больше не знаешь, но до истины всегда можно добраться.
PM MAIL   Вверх
mrVerus
Дата 6.5.2010, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 10.3.2009

Репутация: нет
Всего: нет



Есть ли код с событимяи для нормальных приложений
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.