Windows socket error требуемый адрес для своего контекста неверен

SocketException - "Требуемый адрес для своего контекста неверен" C# Решение и ответ на вопрос 1674795

Penelent

Заблокирован

1

02.03.2016, 09:35. Показов 20284. Ответов 24

Метки нет (Все метки)


на бинде вылетает ошибка такая вот странная

C#
1
2
3
4
var ip = GetNetworkIPAddress();
var ep = new IPEndPoint(ip, 11000);
var listener = new Socket(ep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(ep);

где

C#
1
2
3
4
5
6
7
8
// тут все верно, проверено отладчиком
public static IPAddress GetNetworkIPAddress()
{
    var htmlPage = new WebClient().DownloadString("https://2ip.ru");
    var pattern = @"<big id=""d_clip_button"">(d.+)</big>";
    var match = Regex.Match(htmlPage, pattern);
    return IPAddress.Parse(match.Groups[1].Value);
}

Добавлено через 18 минут
помогите!

Добавлено через 11 часов 56 минут
актуально!

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Эксперт .NET

11066 / 7623 / 1178

Регистрация: 21.01.2016

Сообщений: 28,660

02.03.2016, 12:38

2

Ну это же очевидно. Поставьте Brakepoint на строке var ep = new IPEndPoint(ip, 11000); и посмотрите, что в переменную ip попало. Есть подозрение, что там что попало.



1



1087 / 830 / 490

Регистрация: 09.04.2014

Сообщений: 1,966

02.03.2016, 12:50

3

а почему бы не использовать метод System.Net.Dns.GetHostAddresses(string hostName)?



0



Penelent

Заблокирован

02.03.2016, 15:03

 [ТС]

4

Usaga,

Цитата
Сообщение от Penelent
Посмотреть сообщение

тут все верно, проверено отладчиком

nedel, внешний ip адрес невозможно получить со своего компьютера, только с другого сервера в интернете



0



nedel

1087 / 830 / 490

Регистрация: 09.04.2014

Сообщений: 1,966

02.03.2016, 15:35

5

не сразу понял, что вы ищете свой ip адрес
если я правильно понял, то вы пробуете окрыть порт у себя, тогда

C#
1
2
3
IPEndPoint ep = new IPEndPoint(IPAddress.Any, 11000);
Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(ep);



0



5225 / 3197 / 362

Регистрация: 12.12.2009

Сообщений: 8,101

Записей в блоге: 2

02.03.2016, 15:54

6

Penelent, а как ты собираешься слушать сокет с IP, к которому ты доступа не имеешь?



1



Penelent

Заблокирован

02.03.2016, 16:11

 [ТС]

7

Цитата
Сообщение от nedel
Посмотреть сообщение

IPAddress.Any

что это за бредятина? там нули какие то, это не IP это хз че…

Цитата
Сообщение от Kastaneda
Посмотреть сообщение

Penelent, а как ты собираешься слушать сокет с IP, к которому ты доступа не имеешь?

в каком смысле не имею? это мой ip, как я могу не иметь к нему доступа



0



5225 / 3197 / 362

Регистрация: 12.12.2009

Сообщений: 8,101

Записей в блоге: 2

02.03.2016, 16:14

8

Цитата
Сообщение от Penelent
Посмотреть сообщение

в каком смысле не имею? это мой ip, как я могу не иметь к нему доступа

если это IP именно твоей машины, то зачем лезть куда-то в интернет, чтоб его узнать? Если это IP твоего шлюза, через который ты в интернете сидишь, то как ты на него залезешь?

Добавлено через 50 секунд

Не по теме:

Цитата
Сообщение от Penelent
Посмотреть сообщение

там нули какие то, это не IP это хз че…

Ыыыы :D



0



Penelent

Заблокирован

02.03.2016, 16:17

 [ТС]

9

Цитата
Сообщение от Kastaneda
Посмотреть сообщение

если это IP именно твоей машины, то зачем лезть куда-то в интернет, чтоб его узнать? Если это IP твоего шлюза, через который ты в интернете сидишь, то как ты на него залезешь?

через другой сайт типа 2ip.ru неужели не понятно?



0



5225 / 3197 / 362

Регистрация: 12.12.2009

Сообщений: 8,101

Записей в блоге: 2

02.03.2016, 16:18

10

Цитата
Сообщение от Penelent
Посмотреть сообщение

через другой сайт типа 2ip.ru неужели не понятно?

а это ответ на какой вопрос?



0



Penelent

Заблокирован

02.03.2016, 16:23

 [ТС]

11

3 символа

Цитата
Сообщение от Kastaneda
Посмотреть сообщение

а это ответ на какой вопрос?

Цитата
Сообщение от Kastaneda
Посмотреть сообщение

Если это IP твоего шлюза, через который ты в интернете сидишь, то как ты на него залезешь?



0



5225 / 3197 / 362

Регистрация: 12.12.2009

Сообщений: 8,101

Записей в блоге: 2

02.03.2016, 16:24

12

Кстати тебе текст ошибки

SocketException — «Требуемый адрес для своего контекста неверен»

ни о чем не говорит?

Добавлено через 51 секунду
Penelent, то есть по-твоему ты через левый сайт сможешь залезть на сервер своего провайдера и открыть там сокет на прослушивание?



0



Penelent

Заблокирован

02.03.2016, 16:35

 [ТС]

13

Цитата
Сообщение от Kastaneda
Посмотреть сообщение

ни о чем не говорит?

то то и оно что не говорит

Цитата
Сообщение от Kastaneda
Посмотреть сообщение

Penelent, то есть по-твоему ты через левый сайт сможешь залезть на сервер своего провайдера и открыть там сокет на прослушивание?

да при чем тут на сервер провайдера? я просто узнаю так свой внешний ip, больше мне от этого левого сайта ничего не надо, сервер будет ни где то черте где, а на моем же компе, просто чтобы к нему можно было подключиться из интернета, а не только по локальной сети — надо узнать его внешний ip, забиндиться на него и к нему же коннектить клиентов



0



1087 / 830 / 490

Регистрация: 09.04.2014

Сообщений: 1,966

02.03.2016, 16:44

14

Цитата
Сообщение от Penelent
Посмотреть сообщение

что это за бредятина? там нули какие то, это не IP это хз че…

msdn:

Метод Socket.Bind использует поле Any для указания того, что экземпляр класса Socket должен контролировать действия клиентов на всех сетевых интерфейсах.

Поле Any эквивалентно 0.0.0.0 в формате четырех чисел, разделенных точками.



0



5225 / 3197 / 362

Регистрация: 12.12.2009

Сообщений: 8,101

Записей в блоге: 2

02.03.2016, 16:45

15

Лучший ответ Сообщение было отмечено Penelent как решение

Решение

Penelent, для того, чтобы

Цитата
Сообщение от Penelent
Посмотреть сообщение

к нему можно было подключиться из интернета, а не только по локальной сети

тебе надо купить у провайдера белый IP (который будет виден из интернета, а не только из твоей локальной сети). Это не дорогая услуга, у моего провайдера около 50р./мес. стоит.
Так, как ты пытаешься это сделать, это не возможно.



1



Penelent

Заблокирован

02.03.2016, 16:55

 [ТС]

16

Kastaneda, хмм а мне говорили что надо просто узнать внешний ip… с чего вы взяли что именно так? я имею ввиду, что да, может быть этот ip мой будет динамический и на клиентах придется после каждом смены адреса сервера заново его вводить, для какой то реальной задачи это наверное неудобно, но мне для диплома сойдет и так, мне же надо будет только продемонстрировать…

Добавлено через 5 минут
nedel, и какой адрес я по твоему должен вводить на клиенте для коннекта? 0.0.0.0?



0



5225 / 3197 / 362

Регистрация: 12.12.2009

Сообщений: 8,101

Записей в блоге: 2

02.03.2016, 16:58

17

Цитата
Сообщение от Penelent
Посмотреть сообщение

с чего вы взяли что именно так?

Ну как бы основы основ, мне казалось все это знают, оказывается нет.

Добавлено через 44 секунды

Цитата
Сообщение от Penelent
Посмотреть сообщение

и какой адрес я по твоему должен вводить на клиенте для коннекта? 0.0.0.0?

да, в этом случае будут прослушиваться все интерфейсы.



0



Penelent

Заблокирован

02.03.2016, 16:59

 [ТС]

18

Kastaneda, разве я не прав?

Цитата
Сообщение от Penelent
Посмотреть сообщение

я имею ввиду, что да, может быть этот ip мой будет динамический и на клиентах придется после каждом смены адреса сервера заново его вводить, для какой то реальной задачи это наверное неудобно, но мне для диплома сойдет и так, мне же надо будет только продемонстрировать…

Добавлено через 1 минуту

Цитата
Сообщение от Kastaneda
Посмотреть сообщение

да, в этом случае будут прослушиваться все интерфейсы.

не понимаю что значит фраза «все интерфейсы» — типа Tcp, Udp, Raw… ??? мне кажется клиент тупо не сможет приконнектится



0



5225 / 3197 / 362

Регистрация: 12.12.2009

Сообщений: 8,101

Записей в блоге: 2

02.03.2016, 17:01

19

Цитата
Сообщение от Penelent
Посмотреть сообщение

Kastaneda, разве я не прав?

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

Добавлено через 58 секунд

Цитата
Сообщение от Penelent
Посмотреть сообщение

не понимаю что значит фраза «все интерфейсы» — типа Tcp, Udp, Raw… ???

нет, значит 127.0.0.1 и другие IP.



0



Penelent

Заблокирован

02.03.2016, 17:01

 [ТС]

20

Цитата
Сообщение от Kastaneda
Посмотреть сообщение

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

почему же левой, когда своей??? ты смотрел вообще что такое сайт 2ip.ru? он просто отображает твой же внешний ip, я его парсю со страницы и использую



0



from socket import *
soc = socket(AF_INET, SOCK_STREAM)
soc.connect(('168.62.48.183', 80))
soc.send('GET /miners/get?file=BFGMiner-3.99-r.1-win32.zip HTTP/1.1nUser-Agent:MultiMiner/V3nHost: www.multiminerapp.comn')
with open("http-response.txt","w") as respfile:
    response = soc.recv(1024) # <--- Use select.epoll or asyncore instead!
    respfile.writelines(response)

The reason for why your code fails tho is because you’re trying to bind to an external IP.
Your machine is not aware of this IP hence the error message, if you’d change it to say 127.0.0.1 it would work, but then again you would need a .listen(4) and ns, na = soc.accept() before utelizing .send() and your soc.recv() would need to be ns.recv(1024).

In other words, you mixed up client sockets with server sockets and you’re binding to a IP not present on the local machine.

Also note: soc.recv() will fail, you need a buffer-size argument like so: soc.recv(1024)

Python3:

from socket import *
soc = socket(AF_INET, SOCK_STREAM)
soc.connect(('168.62.48.183', 80))
soc.send(b'GET /miners/get?file=BFGMiner-3.99-r.1-win32.zip HTTP/1.1nUser-Agent:MultiMiner/V3nHost: www.multiminerapp.comnn') # Note the double nn at the end.
with open("http-response.txt","wb") as respfile:
    response = soc.recv(8192)
    respfile.write(response)

There’s two major differences, we send a binary GET /miners/.. string rather than a standard string.
Secondly we open the output-file in a binary form because the data recieved will also be in binary form..

This is because Python no longer decodes the string for you because of a number of reasons, so you need to either treat the data as binary or manually decode it along the way.

You should probably:

import urllib.request
f = urllib.request.urlopen("http://www.multiminerapp.com/miners/get?file=BFGMiner-3.99-r.1-win32.zip")
print(f.read())

Вам помог наш сайт?

Тогда и мы с радостью примем Вашу помощь
Перечислите любую сумму на Билайн-номер +7-777-398-41-00


Каждое перечисление поможет форуму!

Новые сообщения:

Кто что читает?
Кайрат-F2
03 фев 2023, 16:21


Льготное автокредитование в Казахстане
Кайрат-F2
03 фев 2023, 14:18


[01.02.2023 обновлена] Шаблоны форм на 2023 год для ИС СОНО
Кайрат-F2
01 фев 2023, 17:50


[01.02.2023 обновлена] Шаблоны форм на 2022 год для ИС СОНО
Кайрат-F2
01 фев 2023, 17:48


[01.02.2023 обновлена] Шаблоны форм на 2021 год для ИС СОНО
Кайрат-F2
01 фев 2023, 17:48


[01.02.2023 обновлена] Шаблоны форм на 2020 год для ИС СОНО
Кайрат-F2
01 фев 2023, 17:47


Работа сайта и форума bb.f2.kz
Кайрат-F2
01 фев 2023, 15:19


[01.02.2023 обновлена] Правила заполнения налоговых форм на 2019 год
Кайрат-F2
01 фев 2023, 00:16


[01.02.2023 обновлена] Правила заполнения налоговых форм на 2018 год
Кайрат-F2
01 фев 2023, 00:16


[Новость] Предельные цены на нефтепродукты в Казахстане
Кайрат-F2
31 янв 2023, 17:51


[30.01.2023 обновлена] Правила заполнения налоговых форм на 2017 год
Кайрат-F2
30 янв 2023, 15:36


Девальвация или инфляция в Казахстане?
Кайрат-F2
28 янв 2023, 10:13


Угрозы неожиданно низкой инфляции при сокращении спроса
Кайрат-F2
28 янв 2023, 10:09


[Новость] Хорошие новости и хорошие инициативы
Кайрат-F2
27 янв 2023, 22:37


Аргентина, Бразилия и Договор Тлателолько
Кайрат-F2
25 янв 2023, 17:57


[Новость] Форма 701.01 2018 год [Расчёт текущих платежей]
daur
20 янв 2023, 11:30


[Подшивка полезных тем] Отчеты:внутренние, статистические, финансовые
daur
19 янв 2023, 16:35


[Новость] www.esf.gov.kz — Портал по выписке электронных счетов-фактур
Кайрат-F2
16 янв 2023, 22:36


Работа налоговых серверов в 1 квартале 2023 года
Кайрат-F2
15 янв 2023, 18:50


Я и моя машина, наши железные друзья
Кайрат-F2
13 янв 2023, 21:01


Проблемы образования.
Кайрат-F2
13 янв 2023, 20:57


[21.12.2022 обновлена] Версия ИС СОНО 4.0.33 [15.12.2022]
daur
08 янв 2023, 13:38


Новогодняя тема
Necytij
31 дек 2022, 19:54


AKMedia Browser 21.5.2 [ЭСФ, обновление форм СОНО, Кабинет]
daur
24 дек 2022, 22:54


[23.12.2022 обновлена] AKMedia Browser 22.12.23[ЭСФ, обновление форм СОНО, Кабинет]
Кайрат-F2
23 дек 2022, 20:00


Фильм «Откочевники мертвой степи» Досыма Сатпаева
Кайрат-F2
22 дек 2022, 18:05


This is not really specific to Unity but rather c# in general.

Socket.Bind is for binding the socket to a specific local endpoint! Such as for example you want to limit the socket to a specific local network adapter / address (by default it will use any/all) or a specific local port (by default it will pick any free local port)

Use the Bind method if you need to use a specific local endpoint. You must call Bind before you can call the Listen method. You do not need to call Bind before using the Connect method unless you need to use a specific local endpoint.

Usually you use Bind mostly for the server side for listening and waiting for incoming connections or for connectionless protocols like UDP.

You most probably simply want to rather use Socket.Connect for establishing a connection to a remote server.

When using Connect without Bind then it will simply pick the network adapter / address it finds to be the best fit for reaching the given host address and picks the next free local port.


However, in general I would recommend to rather use TcpClient instead of composing and configuring the Socket «manually» (except the use case requires it).

var tcpClient = new TcpClient(sHostIpAddress, nPort);

This constructor will automatically start a connection attempt. TcpClient is an IDisposable and cleans up the underlying socket, stream etc when it is disposed. It also is (in my eyes) way easier to configure and to sent and receive data with it.

This is not really specific to Unity but rather c# in general.

Socket.Bind is for binding the socket to a specific local endpoint! Such as for example you want to limit the socket to a specific local network adapter / address (by default it will use any/all) or a specific local port (by default it will pick any free local port)

Use the Bind method if you need to use a specific local endpoint. You must call Bind before you can call the Listen method. You do not need to call Bind before using the Connect method unless you need to use a specific local endpoint.

Usually you use Bind mostly for the server side for listening and waiting for incoming connections or for connectionless protocols like UDP.

You most probably simply want to rather use Socket.Connect for establishing a connection to a remote server.

When using Connect without Bind then it will simply pick the network adapter / address it finds to be the best fit for reaching the given host address and picks the next free local port.


However, in general I would recommend to rather use TcpClient instead of composing and configuring the Socket «manually» (except the use case requires it).

var tcpClient = new TcpClient(sHostIpAddress, nPort);

This constructor will automatically start a connection attempt. TcpClient is an IDisposable and cleans up the underlying socket, stream etc when it is disposed. It also is (in my eyes) way easier to configure and to sent and receive data with it.

>
TcpClient

  • Подписаться на тему
  • Сообщить другу
  • Скачать/распечатать тему



Сообщ.
#1

,
15.09.06, 18:52

    Member

    **

    Рейтинг (т): 2

    есть 2 машины. Через винду могу общаться друг с другом.

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

    В какую сторону рыть ? (программно или настройки сети или служб)


    andrey



    Сообщ.
    #2

    ,
    15.09.06, 20:39

      Прочитай что-нибудь про сокеты вцелом. Для TCP на одном конце надо октрывать TcpServer. Если хочется чтобы все были одинаковые, используй UDP


      registered



      Сообщ.
      #3

      ,
      15.09.06, 20:45

        Member

        **

        Рейтинг (т): 2

        да он открыт и слушает на порту. Только соединиться не могу.

        Не совсем понятно в чем проблемма — порты одинаковы, ip задан правильно, настройки правильно…


        Pit-Bul



        Сообщ.
        #4

        ,
        16.09.06, 07:53

          а случайно на машинах брандмауэры не влюченя? У меня тоже проблемма была, вроде в программе всен нормально а соединение не проходить, это брандмауэр блокировал как оказалось, хотя разрешения я установил для своих програмок


          art-MiXeR



          Сообщ.
          #5

          ,
          16.09.06, 08:53

            Junior

            *

            Рейтинг (т): 2

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

            Сообщение отредактировано: art-MiXeR — 16.09.06, 08:53


            registered



            Сообщ.
            #6

            ,
            16.09.06, 18:09

              Member

              **

              Рейтинг (т): 2

              Цитата Pit-Bul @ 16.09.06, 07:53

              а случайно на машинах брандмауэры не влюченя?

              выключен

              Цитата art-MiXeR @ 16.09.06, 08:53

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

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

              тут простой код для тестирования. Может в нем что не так ? Но у меня не соединяется. Говорит, что

              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);

                        }

                    }

                }


              art-MiXeR



              Сообщ.
              #7

              ,
              16.09.06, 18:40

                Junior

                *

                Рейтинг (т): 2

                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 16.09.06, 18:43

                Цитата registered @ 16.09.06, 18:09

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

                тут простой код для тестирования. Может в нем что не так ? Но у меня не соединяется. Говорит, что

                ExpandedWrap disabled

                  Требуемый адрес для своего контекста неверен»System.Net.Sockets.SocketException

                Так я не совсем понял: что у тебя работает, а что нет


                registered



                Сообщ.
                #8

                ,
                16.09.06, 19:30

                  Member

                  **

                  Рейтинг (т): 2

                  art-MiXeR, странно — через сокеты все получилось. А разве TcpClient что-то другое делает ?


                  art-MiXeR



                  Сообщ.
                  #9

                  ,
                  16.09.06, 19:49

                    Junior

                    *

                    Рейтинг (т): 2

                    Не знаю, я когда через сокеты делал просто не знал про существование TcpListener’а
                    Если хочешь скинь мне на мыло исходники — посмотрю (т.к. приведённый тобой кусок кода вроде рабочий)

                    Добавлено 16.09.06, 19:56
                    Вот кусок кода из 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 — 16.09.06, 19:57

                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                    0 пользователей:

                    • Предыдущая тема
                    • .NET: Общие вопросы
                    • Следующая тема

                    [ Script execution time: 0,0446 ]   [ 16 queries used ]   [ Generated: 5.02.23, 09:43 GMT ]  


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

                    Модераторы: Snowy, Poseidon, MetalFan

                    Поиск:

                    Ответ в темуСоздание новой темы
                    Создание опроса
                    > Ошибки клиент-сервера, пишу автопоиск в своей программе 

                    :(

                       

                    Опции темы

                    JoKeR13
                    Дата 27.7.2007, 19:56 (ссылка)
                    | (нет голосов)
                    Загрузка ... Загрузка …




                    Быстрая цитата

                    Цитата

                    Новичок

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

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

                    Драствуйте уважаемые у меня проблемка наверно не большая. Значит так: у меня клиент-серверное приложение нужно сделать автопоиск но когда адрес не вернуй тоесть на котором не запущен сервер вылетает стандартная ошибка я не опытный прошу подсказать как написать обработчик для этой ошибки или для ошибки если в качестве адреса предлогаеться набор символов если адресс ввел пользователь например «ыуаывны» Спасибо большое с нетерпением жду ответа!!! 

                    PM MAIL   Вверх
                    JoKeR13
                    Дата 27.7.2007, 23:36 (ссылка)
                    | (нет голосов)
                    Загрузка ... Загрузка …




                    Быстрая цитата

                    Цитата

                    Новичок

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

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

                    Ну не ужели никто не знает, до этого на все вопросы находил ответы а вашем форуме а тут молчек, помогите пожалуйста!!!!!

                    PM MAIL   Вверх
                    MetalFan
                    Дата 28.7.2007, 18:36 (ссылка)
                    | (нет голосов)
                    Загрузка ... Загрузка …




                    Быстрая цитата

                    Цитата

                    Аццкий Сотона
                    ****

                    Профиль
                    Группа: Комодератор
                    Сообщений: 3815
                    Регистрация: 2.10.2006
                    Где: Moscow

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

                    учись задавать вопросы так, чтобы на них было приятно отвечать!
                    хоть бы указал, каким способом связь соединение осуществляется…

                    ———————

                    There are always someone smarter than you…

                    PM MAIL   Вверх
                    JoKeR13
                    Дата 1.8.2007, 22:53 (ссылка)
                    | (нет голосов)
                    Загрузка ... Загрузка …




                    Быстрая цитата

                    Цитата

                    Новичок

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

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

                    Извените подумал что обработчики ошибок пишуться везде одинаково.
                    В своей программе я использую компоненты TClientSocket и TServerSocket соответственно, нужно написать обработчики для следующий ошибкок:

                    Цитата
                     Windows socket error: Сделана попытка выполнить операцию на сокете для недоступного хоста (10065), on API ‘connect’ 

                     — Вылетает если введен не верный или не доступный адрес. Хотелось бы чтоб вместо этой ошибки клиент просто прерывал попытку соеденеия и не выводил отчет об ошибке на экран.

                    Цитата
                     Windows socket error: Требуемый адрес для своего контекста неверен (10049), on API ‘connect’

                     — Происходет при вводе не допустимого для IP значения например текста. Хотелось бы чтобы вместо этого не каму не понятного сообшения было чтонить типа Showmessage (‘Введен не допустипый адрес’) 

                    Заранее благодарен!!!

                    PM MAIL   Вверх
                    Sanchezzz
                      Дата 1.8.2007, 23:32 (ссылка)
                    | (нет голосов)
                    Загрузка ... Загрузка …




                    Быстрая цитата

                    Цитата

                    Эксперт
                    ***

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

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

                    так веть есть свойство
                    TForm1.ServerSocket1ClientError(Sender: TObject;
                    Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
                    var ErrorCode: Integer);
                    Memo1.Lines.Insert(0,’Client error. Code = ‘+IntToStr(ErrorCode));// встовляем сообщение в строку. 
                    ErrorCode:=0;//не выдает системное сообщение об ошибке то есть пропускает мимо ушей. 
                    делаешь перебор ошибок там их немного в каком то модуле они все описаны если совпадает то выводишь

                    а это скромный падарок вроде все ошибки!!!

                    Код

                    { Перечень ошибок:

                      WSABASEERR              = 10000;
                      WSAEINTR                = (WSABASEERR+4)      Interrupted system call
                      WSAEBADF                = (WSABASEERR+9)      Bad file number
                      WSAEACCES               = (WSABASEERR+13)     Permission denied
                      WSAEFAULT               = (WSABASEERR+14)     Bad address
                      WSAEINVAL               = (WSABASEERR+22)     Invalid argument
                      WSAEMFILE               = (WSABASEERR+24)     Too many open files
                      WSAEWOULDBLOCK          = (WSABASEERR+35)     Operation would block
                      WSAEINPROGRESS          = (WSABASEERR+36)     Operation now in progress
                      WSAEALREADY             = (WSABASEERR+37)     Operation already in progress
                      WSAENOTSOCK             = (WSABASEERR+38)     Socket operation on non-socket
                      WSAEDESTADDRREQ         = (WSABASEERR+39)     Destination address required
                      WSAEMSGSIZE             = (WSABASEERR+40)     Message too long
                      WSAEPROTOTYPE           = (WSABASEERR+41)     Protocol wrong type for socket
                      WSAENOPROTOOPT          = (WSABASEERR+42)     Protocol not available
                      WSAEPROTONOSUPPORT      = (WSABASEERR+43)     Protocol not supported
                      WSAESOCKTNOSUPPORT      = (WSABASEERR+44)     Socket type not supported
                      WSAEOPNOTSUPP           = (WSABASEERR+45)     Operation not supported on socket
                      WSAEPFNOSUPPORT         = (WSABASEERR+46)     Protocol family not supported
                      WSAEAFNOSUPPORT         = (WSABASEERR+47)     Address family not supported by protocol family
                      WSAEADDRINUSE           = (WSABASEERR+48)     Address already in use
                      WSAEADDRNOTAVAIL        = (WSABASEERR+49)     Can't assign requestes address
                      WSAENETDOWN             = (WSABASEERR+50)     Network is down
                      WSAENETUNREACH          = (WSABASEERR+51)     Network is unrechable
                      WSAENETRESET            = (WSABASEERR+52)     Network dropped connection on reset
                      WSAECONNABORTED         = (WSABASEERR+53)     Software caused connection abort
                      WSAECONNRESET           = (WSABASEERR+54)     Connection reset by peer
                      WSAENOBUFS              = (WSABASEERR+55)     No buffer space available
                      WSAEISCONN              = (WSABASEERR+56)     Socket is already connected
                      WSAENOTCONN             = (WSABASEERR+57)     Socket is not connected
                      WSAESHUTDOWN            = (WSABASEERR+58)     Can't send aftersocket shutdown
                      WSAETOOMANYREFS         = (WSABASEERR+59)     Too many references: can't splice
                      WSAETIMEDOUT            = (WSABASEERR+60)     Connection timed out
                      WSAECONNREFUSED         = (WSABASEERR+61)     Connection refused
                      WSAELOOP                = (WSABASEERR+62)     Too many levels of symbolic links
                      WSAENAMETOOLONG         = (WSABASEERR+63)     File name too long
                      WSAEHOSTDOWN            = (WSABASEERR+64)     Host is down
                      WSAEHOSTUNREACH         = (WSABASEERR+65)     No route to host
                      WSAENOTEMPTY            = (WSABASEERR+66)     Directory not empty
                      WSAEPROCLIM             = (WSABASEERR+67)     Too many processes
                      WSAEUSERS               = (WSABASEERR+68)     Too many users
                      WSAEDQUOT               = (WSABASEERR+69)     Disc quota exceeded
                      WSAESTALE               = (WSABASEERR+70)     Stale NFS file handle
                      WSAEREMOTE              = (WSABASEERR+71)     Too many levels of remote in path
                      WSASYSNOTREADY          = (WSABASEERR+91)     Network sub-system is unusable
                      WSAVERNOTSUPPORTED      = (WSABASEERR+92)     Winsock DLL cannot support this application
                      WSANOTINITIALISED       = (WSABASEERR+93)     Winsock not initialized
                      WSAHOST_NOT_FOUND       = (WSABASEERR+1001)   Host not found
                      WSATRY_AGAIN            = (WSABASEERR+1002)   Non-authoritative host not found
                      WSANO_RECOVERY          = (WSABASEERR+1003)   Non-recoverable error
                      WSANO_DATA              = (WSABASEERR+1004)   No Data }

                    Это сообщение отредактировал(а) Sanchezzz — 1.8.2007, 23:42

                    ———————

                    Понравился ответ «+» по репе, не забываем закрывать тему, заказы в LS.

                    PM MAIL Skype GTalk   Вверх
                    JoKeR13
                    Дата 3.8.2007, 12:19 (ссылка)
                    | (нет голосов)
                    Загрузка ... Загрузка …




                    Быстрая цитата

                    Цитата

                    Новичок

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

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

                    Спасибо вроде все так, но я не понял где указываеться код ошибки для которой ErrorCode:=0 (тоесть о которой не нужно оповещать) 

                    Цитата
                    делаешь перебор ошибок

                     каким образом? заранее благодарен!

                    Это сообщение отредактировал(а) JoKeR13 — 6.8.2007, 14:31

                    PM MAIL   Вверх



















                    Ответ в темуСоздание новой темы
                    Создание опроса
                    Правила форума «Delphi: Сети»
                    Snowy
                    Poseidon
                    MetalFan

                    Запрещено:

                    1. Публиковать ссылки на вскрытые компоненты

                    2. Обсуждать взлом компонентов и делится вскрытыми компонентами

                    • Литературу по Дельфи обсуждаем здесь
                    • Действия модераторов можно обсудить здесь
                    • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
                    • Вопросы по реализации алгоритмов рассматриваются здесь
                    • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи

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

                     

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

                    Понравилась статья? Поделить с друзьями:
                  • Windows socket error code 10060 openvpn
                  • Windows socket error 10048 on api bind
                  • Windows smm security mitigations table что это
                  • Windows smartscreen не дает установить программу
                  • Windows smartscreen как отключить windows server