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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простой чат 
:(
    Опции темы
DenWPF
Дата 25.12.2010, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Клиент отправляет серверу сообщение - сервер читает
А когда пытаюсь с сервера отправить сообщение оно как бы уходит(ошибки не выдает) - но вот клиент его не читает.


Server:

       
Код

 using System;
        using System.Text;
        using System.Net;
        using System.Net.Sockets;
        using System.IO;
        
        class SocketServer
        {
          
            public static void Main()
            {
              
                StreamReader streamReader;
                NetworkStream networkStream;
        
                TcpListener tcpListener = new TcpListener(5555);
                tcpListener.Start();
        
                Console.WriteLine("The Server has started on port 5555");
                Socket serverSocket = tcpListener.AcceptSocket();
        
                try
                {
                    if (serverSocket.Connected)
                    {
                        Console.WriteLine("Client connected");
                        networkStream = new NetworkStream(serverSocket);
                        
                        AsynchronousMethodDelegate asyncDeleg = new AsynchronousMethodDelegate(AsynchronousMethod);
                        AsyncCallback callback = new AsyncCallback(CallbackMethod);
                        asyncDeleg.BeginInvoke(networkStream, callback, asyncDeleg);
                        streamReader = new StreamReader(networkStream);
                        while (true)
                        {
                            Console.WriteLine(streamReader.ReadLine());
                        }
                        
                    }
        
                    if (serverSocket.Connected)
                        serverSocket.Close();
        
                    Console.Read();
                }
        
                catch (SocketException ex)
                {
                    Console.WriteLine(ex);
                }
                catch (IOException ex) { Console.WriteLine(ex); }
            }
        
        
        
            private static void CallbackMethod(IAsyncResult ar)
            {
                AsynchronousMethodDelegate asyncDeleg = (AsynchronousMethodDelegate)ar.AsyncState;
            }
            private delegate void AsynchronousMethodDelegate(NetworkStream networkStream);
            private static void AsynchronousMethod(NetworkStream networkStream)
            {
                try
                {
                    StreamWriter streamWriter;
                    streamWriter = new StreamWriter(networkStream);
                    while (true)
                    {
                        streamWriter.WriteLine(Console.ReadLine());
                    }
                }
                catch (SocketException ex){}
            }
        }

    

    
    

Client:


    
Код

using System;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
    using System.IO;
    
    class SocketClient
    {
        static void Main(string[] args)
        {
            TcpClient tcpClient;
            NetworkStream networkStream;
          
            StreamWriter streamWriter;
    
            try
            {
                tcpClient = new TcpClient("localhost", 5555);
                networkStream = tcpClient.GetStream();
    
                AsynchronousMethodDelegate asyncDeleg = new AsynchronousMethodDelegate(AsynchronousMethod);
                AsyncCallback callback = new AsyncCallback(CallbackMethod);
                asyncDeleg.BeginInvoke(networkStream, callback, asyncDeleg);
    
                
                streamWriter = new StreamWriter(networkStream);
                while (true)
                {
                    streamWriter.WriteLine(Console.ReadLine());
                    streamWriter.Flush();
                    //Console.WriteLine(streamReader.ReadLine());
                }
                //Console.Read();
            }
            catch (SocketException ex){
                Console.WriteLine(ex);
            }
            
        }
    
        private static void CallbackMethod(IAsyncResult ar)
        {
            AsynchronousMethodDelegate asyncDeleg = (AsynchronousMethodDelegate)ar.AsyncState;
            //lblCallback.Text = asyncDeleg.EndInvoke(ar);
        }
    
        private delegate void AsynchronousMethodDelegate(NetworkStream networkStream);
    
        private static void AsynchronousMethod(NetworkStream networkStream)
        {
            try
            {
                 StreamReader streamReader = new StreamReader(networkStream);
                while (true)
                {
                   
                    Console.WriteLine(streamReader.ReadLine());
                }
            }
            catch (SocketException ex) { }
            catch (IOException ioex) { }
        }
    
    }




PM MAIL   Вверх
kuller
Дата 26.12.2010, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



DenWPF, когда писал тоже, что то типо чата, то очень помогла вот эта статья:
Asynchronous Socket Programming in C#
PM MAIL   Вверх
DenWPF
Дата 19.1.2011, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Скачал я там пример, но почему от он вылетает.

когда отправляю сообщение от сервера клиенту, клиент принимает, но потом клиент вылетает из-за ошибки "принудительно разорвана связь".


PM MAIL   Вверх
Экскалупатор
Дата 19.1.2011, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

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



DenWPF, а твой клиент ждет отправку сообщения от сервера? ну в смысле, сервер знает что ему должно прийти сообщение и ждет подключение клиента к себе, потом обрабатывает то что клиент передал. 
так и наоборот должно быть также, клиент должен ждать, что к нему кто то подключится и что то передаст.
PM MAIL ICQ   Вверх
DenWPF
Дата 19.1.2011, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



да так и ждут. коннект происходит нормально.

но после передачи от сервера клиента сообщения, клиент принимает. а потом я заметил возращается какое то сообщение серверу в нем только нуль записан. и тут оно вылетает.
PM MAIL   Вверх
sq1ony
Дата 25.1.2011, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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


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

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


 




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


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

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