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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Client Server ( Глючит код, не понятно почему ) 
:(
    Опции темы
56illusion
Дата 10.6.2010, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Привет. Я в первые решил заняться программированием TCP . решил написать клиент и сервер.
Вот только чтото не так в етом коде.. странно всё както.. соединение есть, клиент посылает инфу а сервер вроде получает только
не отображаеться строка  текста и т.д
Проверьте ктонибуть у себя, я знаю что мало кому будет дело до моей просьбы, но всётаки присмотритесь к самому коду. может ошибка или не правельно написано всё???
Спасибо


Клиент

Код

 class Program
    {
        private string UserData;
        private byte[] Data = { };
        private TcpClient User;
        private Socket Sock;
        private const string ServerIP = "127.0.0.1";
        private const int Port = 5555;

        static void Main(string[] args)
        {
            Program This = new Program();
            This.User = new TcpClient();
            Console.WriteLine("Connecting to server...");
            try { This.User.Connect(ServerIP, Port); }
            catch
            {
                Console.WriteLine("Connection failed");
                return;
            }
            This.Sock = This.User.Client;
            Console.WriteLine("Socket have buil");
            while (true)
            {
                Console.WriteLine("Write your massage:");
                Console.WriteLine(">");
                This.UserData = Console.ReadLine();
                if (This.UserData == "END") break;
                This.Sock.Send(Encoding.ASCII.GetBytes(/*This.UserData*/ "Helo"));
                This.Sock.Receive(This.Data);
                Console.WriteLine("<" + Encoding.ASCII.GetString(This.Data));
            }
            This.Sock.Close();
            This.User.Close();        
        }
    }


Сервер

Код


class Program
    {
        static void Main(string[] args)
        {
            const int listenPort = 5555;
            string smd;
            ServerThread serv = new ServerThread();
            serv.CreatThread(listenPort);
            while (true)
            {
                smd = Console.ReadLine();
            }
        }
    }

    class ServerThread
    {
        private int Localport;
        private Thread ServThread;
        private TcpListener Listener;

        public void CreatThread(int Port)
        {
            this.Localport = Port;
            this.ServThread = new Thread(new ThreadStart(StartServerThread));
            this.ServThread.Start();
        }

        private void StartServerThread()
        {
            Socket ClientsSock;
            string ServerData;
            byte[] data = { };

            Listener = new TcpListener(new System.Net.IPEndPoint(System.Net.IPAddress.Parse("127.0.0.1"), 5555));
            Listener.Start();
            Console.WriteLine("Waiting to Connection...");
            try { ClientsSock = Listener.AcceptSocket(); Console.WriteLine("Socket Accept"); }
            catch { this.ServThread.Abort(); return; }

            int i = 0;

            if (ClientsSock.Connected)
            {
                while (true)
                {
                    //try { i = ClientsSock.Receive(data); }
                    //catch { }
                    try
                    {
                        //if (i > 0)
                        //{
                            Console.WriteLine("Incomming massage...");
                            ClientsSock.Receive(data);
                            ServerData = Encoding.ASCII.GetString(data).Trim();
                            Console.WriteLine("<" + ServerData);
                            Console.WriteLine(">");
                            ClientsSock.Send(Encoding.ASCII.GetBytes(/*Console.ReadLine()*/ "helom"));
                        //}
                    }
                    catch
                    {
                        ClientsSock.Close();
                        Listener.Stop();
                        Console.WriteLine("Server closing");
                        ServThread.Abort();            
                    }
                }
            }
        }

    }





PM MAIL   Вверх
Sartorius
Дата 10.6.2010, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



А что может прочитаться в массив нулевой длинны ?
Код

byte[] data = {};

PM MAIL ICQ   Вверх
56illusion
Дата 10.6.2010, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ок спасибо... Исправил и сообщение показываеться.. но только один раз всё нормально а если второй раз чёто послать с сервера или клиента на вторую сторону то опять глюки...
моя цель написать систему клинт сервера в которой клиент будет посылать разновидную текстовую информацию серверу, каждый определённый промежуток времени... а сервер только иногда будет посылать разные команды или типо сигналы клиенту в текстовом виде...

PM MAIL   Вверх
56illusion
Дата 14.6.2010, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Куку... ктонибуть поможет???
PM MAIL   Вверх
Exai1e
Дата 14.6.2010, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



56illusion, обязательно использовать сокеты ?
может быть стоит взглянуть к примеру на WCF ?
http://www.techdays.ru/videos/1102.html


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


Шустрый
*


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

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



спасибо за совет. а ета технология вроде легче в плане понимание чем та где используют сокеты?
PM MAIL   Вверх
Exai1e
Дата 15.6.2010, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(56illusion @  15.6.2010,  11:14 Найти цитируемый пост)
спасибо за совет. а ета технология вроде легче в плане понимание чем та где используют сокеты? 

она более удобна в использовании, более перспективна, посмотрите, может быть это то что вам нужно smile
имхо: "голые" сокеты, не всегда лучшее решение
Посмотрите видео, поищите доки/статьи, довольно удобная технология на мой взгляд. А уж что использовать - решать только вам.

Это сообщение отредактировал(а) Exai1e - 15.6.2010, 21:19


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

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


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

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


 




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


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

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