Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/30: Рейтинг темы: голосов - 30, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 20

Error #2031: Ошибка сокета

09.08.2013, 10:04. Показов 6282. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день всем.
Пытаюсь работать с сокетами в AS3. Проблема коротко: есть такой код на AS3
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package 
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.events.ProgressEvent;
    import flash.net.Socket;
    import flash.utils.ByteArray;
    
    
    
    /**
     * ...
     * @author andrew
     */
    public class Main extends Sprite 
    {
        private var varx = 0;
        private var vary=1;
        private var varz=2;
        private var soket:Socket;
        private var byte:ByteArray;
        public function Main():void 
        {
            soket = new Socket();
            soket.addEventListener(Event.CONNECT, connect);
            soket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            soket.connect("127.0.0.1", 1025);
            
            byte = new ByteArray();
            byte.writeByte(varx);
            byte.writeByte(vary);
            byte.writeByte(varz);
            trace(byte[0]);
            trace(byte[1]);
            trace(byte[2]);
        }
        public function connect(e:Event):void {
            soket.writeBytes(byte, 0, 3);
            soket.flush();
            soket.addEventListener(ProgressEvent.SOCKET_DATA, data);
        }
        public function data(e:ProgressEvent)
        {
            soket.readBytes(byte, 0, 3);
            soket.flush();
            trace(byte[0]);
            trace(byte[1]);
            trace(byte[2]);
        }
        private function ioErrorHandler(event:IOErrorEvent):void {
        trace("ioErrorHandler: " + event);
    }
        
    }
    
}
Тут происходит подключение сокета к серверу на C++ ,вот сам код сервера
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <cstdlib>
#include <iostream>
#include <winsock2.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    char buff[30];
    WSAStartup(0x202,((WSADATA*)&buff[0]));
    cout << "Create socket...\n";
    SOCKET my_sok = socket(AF_INET, SOCK_STREAM,0);
    cout << "Bind socket...\n";
    sockaddr_in local_addr;
    local_addr.sin_family = AF_INET;
    local_addr.sin_port = htons(1025);
    local_addr.sin_addr.s_addr = 0;
    bind(my_sok,(sockaddr*)&local_addr, sizeof(local_addr));
    cout << "Listen socket...";
    listen(my_sok,5);
    
    sockaddr_in client_addr;
    int size_client = sizeof(client_addr); 
    
    SOCKET client_sok;
    char mess[3] = {'\0','\0','\0'};
    
    while(mess != "ext")
    {
            if((client_sok = accept(my_sok,(sockaddr*)&client_addr,&size_client)))
            {
            }
            else
            {
                recv(client_sok,mess,sizeof(mess),0);
                cout << mess << "\n";
                mess[0] += 1;
                send(client_sok, mess, sizeof(mess),0);
            }
    }
    closesocket(my_sok);
    WSACleanup();
    system("PAUSE");
    return EXIT_SUCCESS;
}
На сервер посылаются три байта, на сервере первый байт каждый раз инкрементируется, все отсылается обратно.
Проблема в том, что когда я нажимаю кнопку выполнить в FlashDevelop, открывается окно флэш-плеера, а в панели Output я вижу такое:
0
1
2
ioErrorHandler: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2031: Ошибка сокета. URL: 127.0.0.1"]
И потом, через некоторое время работы приложения туда добавляется следующая строка
Error #2044: Необработанный securityError:. text=Error #2048: Нарушение изолированной среды: file:///C|/as3/soket/bin/soket.swf не может загрузить данные из 127.0.0.1:1025.
at Main()[C:\as3\soket\src\Main.as:25]
Подскажите пожалуйста, что мне нужно предпринять, чтобы устранить эти ошибки?
В интернете искал, нашел что-то про "изолированную среду", но не знаю как ее настроить во FlashDevelop4.
Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.08.2013, 10:04
Ответы с готовыми решениями:

Error: Обычно разрешается только одно использование адреса сокета (протокол/сетевой адрес/порт)
Можно ли как-то обойти эту ошибку, и отправить пакет на &quot;занятый&quot; адрес/порт

Ошибка при добавлении в файл. Ошибка 101: Ошибка записи на диск (Error 101: Disk write error).
Здравствуйте, возникла проблема такого плана. Нужно произвести добавление записи в файл, но после успешного создания и чтения вылазиет...

Копирование сокета или передача сокета в функцию
Добрый день всем, столкнулся с тем что не могу скопировать сокет. boost::asio::ip::tcp::socket socket(io_service); ...

15
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
09.08.2013, 10:35
Ошибки, securityError, там же есть и примеры.
0
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 20
09.08.2013, 11:31  [ТС]
Про ошибку
Error #2044: Необработанный securityError:. text=Error #2048: Нарушение изолированной среды: file:///C|/as3/soket/bin/soket.swf не может загрузить данные из 127.0.0.1:1025.
at Main()[C:\as3\soket\src\Main.as:25]
Я понял, что надо что-то сделать с изолированной средой безопасности, только как это сделать в FlashDevelop я не знаю.
А про первую ошибку я ничего дельного не нашел... Или там проблема тоже решается изолированной средой безопасности? Если да, то подскажите пожалуйста, как ее(среду безопасности) изменить, для возможности взаимодействия моего приложения с сетью?
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
09.08.2013, 12:56
Так ведь IOError:
Исключение IOError выбрасывается при ошибках ввода-вывода. Например, исключение IOError выдается, если предпринята операция чтения/записи для сокета, который не подключен или отключился.
0
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 20
09.08.2013, 13:32  [ТС]
Я Вас не понимаю. Или Вы намекаете на то, что сокет вообще не подключен? Но, вот же код для подключения
ActionScript 3
1
2
3
4
soket = new Socket();
            soket.addEventListener(Event.CONNECT, connect);
            soket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            soket.connect("192.168.1.18", 1025);
Я сейчас его немного изменил, с Денвером химичил, но не получилось(
Цитата Сообщение от TanaTiX Посмотреть сообщение
Исключение IOError выбрасывается при ошибках ввода-вывода. Например, исключение IOError выдается, если предпринята операция чтения/записи для сокета, который не подключен или отключился.
А как может быть предпринята эта операция, если сокет еще только подключается? Или сокет подключается к "несуществующему" IP, флэш-плеер пропускает это мимо глаз(ушей или что у него там) и выдает мне эту ошибку, уже когда я пытаюсь слать по этому сокету данные вот таким кодом?
ActionScript 3
1
2
3
4
5
public function connect(e:Event):void {
            soket.writeBytes(byte, 0, 3);
            soket.flush();
            soket.addEventListener(ProgressEvent.SOCKET_DATA, data);
        }
Добавлено через 11 минут
PS И вот здесь же сказано, что метод connect() вызывает событие ioError:IOErrorEvent. Метод connect() же не может производить операции чтения/записи в сокет?
connect
() метод
События
connect:Event — Отправляется после установления сетевого подключения.

ioError:IOErrorEvent — Отправляется, если узел указан, но возникает ошибка ввода-вывода, вызывающая сбой подключения.

securityError:SecurityErrorEvent — Отправляется, если вызов Socket.connect() пытается установить подключение к серверу, на котором нет файла политик для сокетов, либо к серверу, на котором файл политик для сокетов не предоставляет вызывающему узлу доступ к указанному порту. Дополнительные сведения о файлах политик см. в главе «Элементы управления веб-сайтом (файлы политики)» в Руководстве разработчика по ActionScript 3.0, а также в разделе центра разработчиков Flash Player Developer Center: Безопасность.
Выдает
IOError — Сбой подключения, так как не был указан узел.

SecurityError — Эта ошибка возникает в содержимом SWF по следующим причинам:

Локальные ненадежные SWF-файлы могут быть изолированы от Интернета. Можно устранить это ограничение, если переклассифицировать файл как локальный с сетевым подключением или доверенный.
Не допускается указывать номер порта сокета выше 65535.
На HTML-странице с SWF-cодержимым для параметра allowNetworking тегов object и embed устанавливается значение none.
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
09.08.2013, 13:54
Почитайте, про crossdomain особенно.
0
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 20
09.08.2013, 15:12  [ТС]
Про это все я читал раньше, создал файл crossdomain.xml такого содержания и запихал его на диск C(Ну, там же сказано "в корневой каталог сервера"), но пользы это не принесло, сейчас качаю Adobe Flash Professional CS5.
XML
1
2
3
4
5
6
<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 
<!-- Policy file for xmlsocket://socks.mysite.com --> 
<cross-domain-policy>  
    <allow-access-from domain="*" to-ports="*" /> 
</cross-domain-policy>
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
09.08.2013, 16:17
Цитата Сообщение от Delta36652 Посмотреть сообщение
Ну, там же сказано "в корневой каталог сервера"
Какое отношение диск С имеет к серверу?
0
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 20
09.08.2013, 17:44  [ТС]
Ну я так понимаю, что мой комп т.е. диск С и есть сервер или я не прав? По крайней мере, когда я изучал сокеты на С++ никакого сервера не требовалось, просто запускал файл сервера у себя на компе,а потом файл клиента и все было ок. А тут что-ли по-другому?
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
09.08.2013, 19:31
Цитата Сообщение от Delta36652 Посмотреть сообщение
или я не прав?
Не прав.
Читаем
0
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 20
10.08.2013, 06:29  [ТС]
Спасибо за ссыль.
У меня каким-то чудом все заработало. Оказывается была ошибка в коде сервера.
Ладно, а как в actionscript3 дело обстоит с UDP сокетами?
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
10.08.2013, 14:35
Наверное вам необходимо прочитать про это
0
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 20
10.08.2013, 17:47  [ТС]
Я раньше про все это уже читал, даже сделать пытался. Но что-то не захотело ничего работать, проблемы были с AIR Debug Launcher. Вообще, я бы хотел видеть пример приложения с использованием DatagramSocket, т.е. все, от типа проекта до работы самого приложения.
PS На C++ UDP сервер и клиент реализовывал ранее, все работает.
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
10.08.2013, 18:27
Цитата Сообщение от Delta36652 Посмотреть сообщение
я бы хотел видеть пример приложения с использованием DatagramSocket
Может кто и поможет примером... Я ранее работал только с обычным Socket-ом и XMLSocket-ом (по сути тоже самое). DatagramSocket использовать пока не доводилось, хотя не думаю, что в реализации клиента есть что-то сверхъестественное.
0
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 20
11.08.2013, 17:11  [ТС]
Сверхъестественное? Да, может быть и сверхъестественное. Когда, указываешь в application.xml(файлик такой, где путь к air дебагеру прописан) нормальный путь, а он в ответ: Неверный путь и все в таком духе)) А вообще мне кажется Вы один на этом форуме сидите(я имею ввиду этот раздел).
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
11.08.2013, 18:12
Delta36652, исторически так сложилось, что мне больше нравится Zinc (как возможная альтернатива Air-у), но. вероятно, скоро также придется заняться подобным вопросом. Это я к тому, что на данный момент врядли смогу квалифицированно помочь.

Не по теме:

А народ здесь есть, и не только спрашивающий, но и советующий.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.08.2013, 18:12
Помогаю со студенческими работами здесь

Ошибка сокета
Вечер добрый. Столкнулся с такой проблемой. И cуть ее в следующем.. Для отправки сообщения на емайл, использую этот код: ...

ошибка сокета 10060
помогите, писал простую программу суть в том, что я пытался применить компонент TserverSocket и ClientSocket, так вот в чем проблема: при...

Ошибка сокета (10053)
В разрабатываемой программе, связь производится через синхронные сокеты по протоколу TCP. Программа устанавливает связь с другими...

Ошибка при создании сокета
Здравствуйте, при создании сокета происходит ошибка #include sockets.hpp socket(AF_INET, SOCK_DGRAM, 0) на windows не...

Чат, ошибка сокета 10053
Всем привет, в общем: пишу чат, всё работает нормально, вот только есть один большой минус, если кто то из клиентов крашится или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru