На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> TcpClient
    есть 2 машины. Через винду могу общаться друг с другом.

    Но если пытаюсь соединиться программно, то пишет, что "Требуемый адрес для своего контекста неверен"

    В какую сторону рыть ? (программно или настройки сети или служб)
      Прочитай что-нибудь про сокеты вцелом. Для TCP на одном конце надо октрывать TcpServer. Если хочется чтобы все были одинаковые, используй UDP
        да он открыт и слушает на порту. Только соединиться не могу.

        Не совсем понятно в чем проблемма - порты одинаковы, ip задан правильно, настройки правильно...
          а случайно на машинах брандмауэры не влюченя? У меня тоже проблемма была, вроде в программе всен нормально а соединение не проходить, это брандмауэр блокировал как оказалось, хотя разрешения я установил для своих програмок
            Попробуй подключиться к порту, который слушает серверная часть приложения обычным браузером.
            Сообщение отредактировано: art-MiXeR -
              Цитата Pit-Bul @
              а случайно на машинах брандмауэры не влюченя?

              выключен

              Цитата art-MiXeR @
              Попробуй подключиться к порту, который слушает серверная часть приложения обычным браузером

              обычный браузер соединяется нормально. Но что самое странное сетевой снифер ничего не показывает :)

              тут простой код для тестирования. Может в нем что не так ? Но у меня не соединяется. Говорит, что
              ExpandedWrap disabled
                Требуемый адрес для своего контекста неверен"System.Net.Sockets.SocketException


              сам код
              server
              ExpandedWrap disabled
                using System;
                using System.Collections.Generic;
                using System.Text;
                using System.Net;
                using System.Net.Sockets;
                 
                 
                namespace server
                {
                    class Program
                    {
                        static void Main(string[] args)
                        {
                            Int32 port = 0x732;
                            TcpListener server = new TcpListener(port);
                            //TcpListener server = new TcpListener(ip, port);
                            server.Start();
                 
                            while(true)
                            {
                                Console.Write("Waiting for a connection... ");
                        
                                TcpClient client = server.AcceptTcpClient();
                                Console.WriteLine("Connected!");
                                NetworkStream stream = client.GetStream();        
                                client.Close();
                            }
                        }
                    }
                }


              Пробовал все версии конструктора

              client
              ExpandedWrap disabled
                using System;
                using System.Collections.Generic;
                using System.Text;
                using System.Net;
                using System.Net.Sockets;
                 
                namespace client
                {
                    class Program
                    {
                        private static int m_port = 0x732;
                        private static TcpClient m_client = null;
                        protected static NetworkStream m_stream = null;
                 
                        static void Main(string[] args)
                        {
                            IPHostEntry hostEntry = Dns.GetHostEntry("my_computer");
                            IPAddress[] ipList = hostEntry.AddressList;
                 
                            for (int index = 0; index < ipList.Length; ++index)
                            {
                                IPAddress ip = ipList[index];
                                IPEndPoint endPoint = new IPEndPoint(ip, m_port);
                 
                                try
                                {
                                    m_client = new TcpClient(endPoint);
                                    m_stream = m_client.GetStream();
                                    Console.WriteLine(ip.ToString() + ": " + "Connect!");
                                }
                                catch (ArgumentNullException ex)
                                {
                                    Console.WriteLine(ip.ToString() + ": ", ex);
                                }
                                catch (SocketException ex)
                                {
                                    Console.WriteLine(ip.ToString() + ": ", ex);
                                }
                            }
                 
                            System.Threading.Thread.Sleep(5000);
                 
                        }
                    }
                }
                ExpandedWrap disabled
                  IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse([B]___address___[/B]), [B]___port___[/B]);
                  Socket listener;
                   
                  public void StartListening()
                          {
                              if (endPoint == null)
                              {
                                  //Генерируем исключение
                              }
                   
                              if (listener != null)
                              {
                                  //Генерируем исключение
                              }
                   
                              listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                              listener.Bind(endPoint);
                              listener.Listen(100);
                              listener.BeginAccept(AcceptConnection, null);
                          }


                -Added
                Цитата registered @
                обычный браузер соединяется нормально. Но что самое странное сетевой снифер ничего не показывает :)

                тут простой код для тестирования. Может в нем что не так ? Но у меня не соединяется. Говорит, что
                ExpandedWrap disabled
                  Требуемый адрес для своего контекста неверен"System.Net.Sockets.SocketException

                Так я не совсем понял: что у тебя работает, а что нет
                  art-MiXeR, странно - через сокеты все получилось. А разве TcpClient что-то другое делает ?
                    Не знаю, я когда через сокеты делал просто не знал про существование TcpListener'а
                    Если хочешь скинь мне на мыло исходники - посмотрю (т.к. приведённый тобой кусок кода вроде рабочий)

                    Добавлено
                    Вот кусок кода из MSDN - найди 10 отличий(или больше) :)

                    ExpandedWrap disabled
                      using System;
                      using System.IO;
                      using System.Net;
                      using System.Net.Sockets;
                      using System.Text;
                       
                      class MyTcpListener
                      {
                        public static void Main()
                        {
                          TcpListener server=null;  
                          try
                          {
                            // Set the TcpListener on port 13000.
                            Int32 port = 13000;
                            IPAddress localAddr = IPAddress.Parse("127.0.0.1");
                            
                            // TcpListener server = new TcpListener(port);
                            server = new TcpListener(localAddr, port);
                       
                            // Start listening for client requests.
                            server.Start();
                              
                            // Buffer for reading data
                            Byte[] bytes = new Byte[256];
                            String data = null;
                       
                            // Enter the listening loop.
                            while(true)
                            {
                              Console.Write("Waiting for a connection... ");
                              
                              // Perform a blocking call to accept requests.
                              // You could also user server.AcceptSocket() here.
                              TcpClient client = server.AcceptTcpClient();            
                              Console.WriteLine("Connected!");
                       
                              data = null;
                       
                              // Get a stream object for reading and writing
                              NetworkStream stream = client.GetStream();
                       
                              int i;
                       
                              // Loop to receive all the data sent by the client.
                              while((i = stream.Read(bytes, 0, bytes.Length))!=0)
                              {  
                                // Translate data bytes to a ASCII string.
                                data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
                                Console.WriteLine("Received: {0}", data);
                            
                                // Process the data sent by the client.
                                data = data.ToUpper();
                       
                                byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);
                       
                                // Send back a response.
                                stream.Write(msg, 0, msg.Length);
                                Console.WriteLine("Sent: {0}", data);            
                              }
                              
                              // Shutdown and end connection
                              client.Close();
                            }
                          }
                          catch(SocketException e)
                          {
                            Console.WriteLine("SocketException: {0}", e);
                          }
                          finally
                          {
                             // Stop listening for new clients.
                             server.Stop();
                          }
                       
                            
                          Console.WriteLine("\nHit enter to continue...");
                          Console.Read();
                        }  
                      }
                    Сообщение отредактировано: art-MiXeR -
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0.0823 ]   [ 16 queries used ]   [ Generated: 15.07.26, 16:26 GMT ]