Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2010, 09:45   #1
pa6kevi4
Пользователь
 
Регистрация: 15.09.2009
Сообщений: 52
Вопрос Клиент-сервер; крестики-нолики

Здравствуйте. Я делаю игру крестики-нолики. Надо чтобы два клиента смогли играть через сервер.



Можно ли обьединить 2 сокета, для того, чтобы например если один игрок делает ход (нажимает на кнопочку), всем клиентам рассылалась строка, например (button2 Pavel), потом опять, например (button8 Andrew) - уже с другого клиента и т.п. Вот что пока что у меня есть:

Сервер:
Код:
using System;
using System.Net.Sockets;
using System.Net;
using System.Collections.Generic;
using System.Text;

namespace SServer
{
    public class SServer
    {
        public static void Main(string[] args)
        {
            byte[] bytes = new byte[1024];       
            //Устанавливаем для сокета локальную конечную точку
            IPHostEntry ipHost = Dns.Resolve("localhost");
            IPAddress ipAddr = ipHost.AddressList[0];
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);
            //Создаем сокет TCP\IP
            Socket sListener = new Socket(AddressFamily.InterNetwork,
                SocketType.Stream, ProtocolType.Tcp);
            //Назначаем сокет локальной конечной точку
            // и слушаем входящие сокеты
            try
            {
                sListener.Bind(ipEndPoint);
                sListener.Listen(10);

                bool first_connect = false;
                int connect_count = 0;
                while (true)
                {
                    if (!first_connect)
                    {
                        Console.WriteLine("Server is running... ", ipEndPoint);
                        first_connect = true;
                    }
                    Socket handler = sListener.Accept();
                    string data = null;
                    int bytesRec = handler.Receive(bytes);
                    data += Encoding.ASCII.GetString(bytes, 0, bytesRec);
                    Console.WriteLine(data);
                    int conn = data.IndexOf("connected...");
                    if (conn > 0) { connect_count++; }
                    if (connect_count == 2)
                    {
                        Console.WriteLine("Two players connected... Game started...");
                    }

                    /*string theReply = "REPLY";
                    byte[] msg = Encoding.ASCII.GetBytes(theReply);
                    handler.Send(msg);*/
                    
                    double Num;
                    bool isNum = double.TryParse(data[1].ToString(), out Num);

                    if (isNum)
                    {
                        string theReply = "";
                        switch (data[1])
                        {
                            case '1': theReply = "b1"; break;
                            case '2': theReply = "b2"; break;
                            case '3': theReply = "b3"; break;
                            case '4': theReply = "b4"; break;
                            case '5': theReply = "b5"; break;
                            case '6': theReply = "b6"; break;
                            case '7': theReply = "b7"; break;
                            case '8': theReply = "b8"; break;
                            case '9': theReply = "b9"; break;
                            default: break;
                        }
                        byte[] msg = Encoding.ASCII.GetBytes(theReply);
                        handler.Send(msg);
                    }
                    else
                    {
                        string theReply = "";
                        byte[] msg = Encoding.ASCII.GetBytes(theReply);
                        handler.Send(msg);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
    }
}
Вложения
Тип файла: txt client code.txt (3.9 Кб, 183 просмотров)
pa6kevi4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Крестики - Нолики на С# RaTyS Фриланс 3 28.11.2011 23:11
крестики-нолики {PatRioT} Паскаль, Turbo Pascal, PascalABC.NET 4 14.05.2009 13:24
Крестики-нолики mish@ Общие вопросы Delphi 6 07.05.2009 11:01
КРЕСТИКИ-НОЛИКИ((( magadan Паскаль, Turbo Pascal, PascalABC.NET 8 02.05.2009 22:16
Крестики - Нолики Иваненко Помощь студентам 6 09.05.2008 22:09