Что нового

Ошибка в создании сокета

Makrut

Новичок
Сообщения
44
Репутация
2
Здравствуйте, есть код. На ноутбуке я указываю айпи, указываю 80 порт и компилирую. Но при компиляции срабатывает строчка
Код:
If @error Then ExitLoop
Можете подсказать что делать? Нужно решить проблему, чтобы сокет успешно создавался. p.s компьютер и ноутбук сидят от одного вай фая


Код:
TCPStartup();Инициировать использование службы TCP
$IP = @IPAddress1;Указываем адрес который будем прослушивать;
$port = 400;Указываем порт который будем прослушивать
While 1
    $socket = TCPListen($IP, $port, 1);Создаем слушающий сокет, по указанному адресу
    If @error Then ExitLoop;Если не удалось создать сокет, то выйти
    $Connect = -1
    Do
        $Connect = TCPAccept($socket);Указыываем ОС создать сокет если появилось входящее подключение в прослушиваемом сокете
    Until $Connect <> -1;Если клиент подключился, то выйти из цикла, если ошибка или никто не подключился, то продолжить цикл
    While 1
        $dannie = TCPRecv($Connect, 2048);Получаем максимум 2048 символов от клиента
        If @error Then ExitLoop;Если не удалось получить символы, то выйти из цикла
        If $dannie <> "" Then;Если данные получены, то...
                MsgBox(0,'Get',$dannie)
            ExitLoop
        EndIf
        Sleep(30)
    WEnd
    TCPCloseSocket($socket);Закрываем сокет
WEnd
TCPShutdown();Завершить использование службы TCP
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
80 порт может быть занят. Например его очень любит занимать Skype.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Makrut [?]
Проблема не решена
Замените:
Код:
If @error Then ExitLoop;Если не удалось создать сокет, то выйти


На:
Код:
If @error Then
		MsgBox("","Error", @error)
		ExitLoop;Если не удалось создать сокет, то выйти
	EndIf


Какой код ошибки получаете?
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Makrut [?]

WSAEADDRNOTAVAIL 10049
Cannot assign requested address.
The requested address is not valid in its context. This normally results from an attempt to bind to an address that is not valid for the local computer. This can also result from connect, sendto, WSAConnect, WSAJoinLeaf, or WSASendTo when the remote address or port is not valid for a remote computer (for example, address or port 0).

Проверяйте номер порта или IP-адресс. Что то из них неверное.

Код:
TCPStartup();Инициировать использование службы TCP
$IP = @IPAddress1;Указываем адрес который будем прослушивать;
$port = 80;Указываем порт который будем прослушивать

MsgBox("","Подключение к...", $IP & ":" & $port)
 
Автор
Makrut

Makrut

Новичок
Сообщения
44
Репутация
2
Проверяйте номер порта или IP-адресс. Что то из них неверное.

Ip точно верный (я его скопировал). Порт 1111 не занят, брандмаузер его вроде как не блокирует. Ваш код выводит следующий текст: 5.166.192.17:1111 (айпи, порт).

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

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Makrut [?]
Ip точно верный (я его скопировал)
Всмысле скопировали? Вы не можете слушать порт чужой машины. 5.166.192.17 похож на внешний интернет-адрес а не на локальный.

Чтобы подробно разобраться, постарайтесь описать полностью все манипуляции, которые производите. Куда, откуда хотите подключиться, откуда взяли IP-адреса и т.д.
 
Автор
Makrut

Makrut

Новичок
Сообщения
44
Репутация
2
Повозился еще немножко и решил проблему при вашей помощи. Еще раз большое спасибо!
 
Верх