Модераторы: Rickert

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Серверная часть 
:(
    Опции темы
Exai1e
Дата 30.11.2009, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



это проблема в данном примере, потому что данная реализация не расчитанна на более двух клиентов =) думайте, думайте (создавайте по потоку на клиента, и обрабатывай каждое подключение отдельно, храни клиентов(подключения) в списке п котом бегай в зависимости от сообщения ( от клиента который доставил сообщение). информации в интернете более чем достаточно по написанию много пользовательских "чатов" на основе сокетов. Я лишь дал пищу для размышлений =) ведь так интереснее ? на то оно и программирование) а не копи паст наука) (хотя бы информацию надо уметь искать, а она есть) сам буквально пол года назад задавался тем же вопросом, сокеты, С# бла бла))
или пасмари в сторону WCF очень удобная технология работы с данными.


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
DenWPF
Дата 30.11.2009, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

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



та просто в том то и дело, времени сейчас мало, а вот игру надо написать...
без онлайна писать тоже лень..а тут если будет сервер, то самого юнита в игре можно напичкать всякой хренью, не люблю мучатся с АИ
PM MAIL   Вверх
Exai1e
Дата 1.12.2009, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



DenWPF, Зарядку для мозга с утра по раньше устроил себе smile
вот, набросал кое че, доработаешь напильником думаю сам =) основную задачу выполняет, сервер принимает сообщения от нескольких клиентов
Сервер:
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace SocketServerApp
{
    public class Server
    {
        private TcpListener server;
        private Thread mainReceiveThread;

        private int serverPort = 0;

        public Server(int pServerPort)
        {
            this.serverPort = pServerPort;
        }

        public void RunServer()
        {
            IPAddress address = IPAddress.Parse("127.0.0.1");
            server = new TcpListener(address, this.serverPort);
            mainReceiveThread = new Thread(MainReceive);

            server.Start();
            mainReceiveThread.Start();
            Console.WriteLine("Server run");
        }

        private void CurrentReceiveThread(object curClient)
        {
            TcpClient currentClient = curClient as TcpClient;
            while (true)
            {
                NetworkStream stream = currentClient.GetStream();

                byte[] buff = new byte[1024];
                int receiveDataLength = 0;
                if (stream.DataAvailable)
                {
                    try
                    {
                        receiveDataLength = stream.Read(buff, 0, buff.Length);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("receive exception: {0}", e.Message);
                    }
                    string receiveString = Encoding.UTF8.GetString(buff, 0, receiveDataLength);
                    Console.WriteLine("Message receive: {0}", receiveString);
                }
            }

        }

        private void MainReceive()
        {
            bool receiveStatus = true;
            while (receiveStatus)
            {
                try
                {                   
                    TcpClient client = server.AcceptTcpClient();
                    Console.WriteLine("Client connected");
                    Thread cur = new Thread(new ParameterizedThreadStart(CurrentReceiveThread));
                    cur.Start(client as object);                    
                }
                catch (Exception e)
                {
                    Console.WriteLine("exception: {0}", e.Message);
                    receiveStatus = false;
                }
                
            }
        }
    }
}


Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SocketServerApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Server server = new Server(777);
            server.RunServer();
            Console.ReadLine();
        }
    }
}



Клиент, сообщения не принимает, допишешь сам на примере что давал вчера, у меня сейчас особо нет времени: мне лень)
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Threading;

namespace SocketClientApp
{
    public class Client
    {
        TcpClient client;
        Thread receiveThread;
        NetworkStream stream;

        public void RunClient(string pAddress, int pPort)
        {
            client = new TcpClient(pAddress, pPort);
            receiveThread = new Thread(Receive);
            stream = client.GetStream();
            receiveThread.Start();
        }

        private void Receive()
        {
            bool receiveStatus = true;
            while (receiveStatus)
            {
                try
                {
                    byte[] receiveBuff = new byte[256];
                    int receiveLength = stream.Read(receiveBuff, 0, receiveBuff.Length);
                    if (receiveLength > 0)
                    {
                        string receiveString = System.Text.Encoding.ASCII.GetString(receiveBuff, 0, receiveLength);
                        //Console.WriteLine("Receive message: " + receiveString);
                    }

                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception: " + e.Message);
                    receiveStatus = false;
                }
            }
        }
        public void SendMessage(string pMessage)
        {
            try
            {
                Byte[] buffMessage = System.Text.Encoding.ASCII.GetBytes(pMessage);
                stream.Write(buffMessage, 0, buffMessage.Length);
                Console.WriteLine("Message sending");
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
        }
    }
}


Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SocketClientApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Client client = new Client();
            client.RunClient("127.0.0.1", 777);

            client.SendMessage("Hello server");
            client.SendMessage(Console.ReadLine());

            Console.ReadLine();
        }
    }
}


Это сообщение отредактировал(а) Exai1e - 1.12.2009, 10:11


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Exai1e
Дата 1.12.2009, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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





--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




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


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

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