Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Нет подключения к серверу (Java+AS3) (http://www.flasher.ru/forum/showthread.php?t=183443)

XimiKDeniS 21.08.2012 22:28

Нет подключения к серверу (Java+AS3)
 
День добрый.
Делаю клиент-серверное приложение все вроде работает, но вдруг захотелось попробовать не в дебаг версии проверить. Включил-подключения к серверу нет. В дебаг все работает. Подскажите пожалуйста. Форум мельком проглядел, вроде проблемы такой нет. Если есть, извините очень занят, может не усмотрел.

Добавлено через 43 минуты
Понял, что проблема в кроссдоменнике, но не понимаю почему. На подключение к серверу сервер отвечает
Код:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
        <allow-access-from domain="*" secure="false"/>
</cross-domain-policy>

Добавлено через 44 минуты
И кстати сервер сокет.

caseyryan 22.08.2012 08:01

Дебаг версии кроссдоменник вообще пофиг. При подключении к серверу, сервер должен отправить клиенту кроссдоменник и закрыть соединение, а после, клиент должен снова приконнектиться.
Здесь надо смотреть код клиента и сервера

XimiKDeniS 22.08.2012 19:23

Я зашел сюда как раз для того, чтобы написать что тут проблема с сервером и что нужен его код. Кароче пытался сделать отсылку при подключении-не работает, сервер тупо не видит, что к нему подключаются.
Код:

import java.io.*;
import java.net.*;

public class MainClass extends Thread{
Socket s;
static int port = 12000;
public static void main(String[] args) {
try
        {
            int i = 0;
            ServerSocket server = new ServerSocket(port);
            while(true)
            {
                new MainClass(i, server.accept());
                i++;
            }
        }catch(Exception e)
        {
                        mess.Error(e.toString());
        }
}
public MainClass(int num, Socket s)
    {
        System.out.println ("Session Created");
        this.s = s;
        setDaemon(true);
        setPriority(NORM_PRIORITY);
        start();
  }

public void run()
    {
        try
            {
                String SendingData = null;
                byte buf[] = new byte[64*1024];
                int r = 0;
                String data = null;
                while (true)
                {
                        InputStream in = s.getInputStream();
                        r = in.read(buf);
                        data = new String(buf, 0, r);
                        if (data.equals("<policy-file-request/>"))
                            {
                                    String str1;
                                str1 = "";
                                str1 += "<cross-domain-policy>";
                                      str1 += "<allow-access-from domain=\"*\" to-ports=\"*\"/>";
                                str1 += "</cross-domain-policy>" + "\u0000";
                                    OutputStream ous;
                                try {
                                        ous = s.getOutputStream();
                                        ous.write(str1.getBytes());
                                        ous=null;
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                        }
                }
        }catch(Exception e){}
 }

Вроде все правильно скопировал. Проблема в том, что даже подключение не создается, хотя я пробовал в маршрутизации портов переводить 843 порт на 12000. (По идее и без этого он должен был слать запрос на 12000). Покажите пожалуйста правильный вариант передачи кроссдоменника.

Добавлено через 43 секунды
И кстати на всякий случай пытался пробовать другой вариант кроссдоменника

t4arty 22.08.2012 21:03

эм... можно вопрос? спасибо. Почему у Вас:

Код AS1/AS2:

try
        {
            int i = 0;
            ServerSocket server = new ServerSocket(port);
            while(true)
            {
                new MainClass(i, server.accept());
                i++;
            }
        }catch(Exception e)
        {
                        mess.Error(e.toString());
        }
}

просто так валяется?

XimiKDeniS 22.08.2012 21:08

Я ступил, блок заключен в
Код:

public static void main(String[] args) {

}

Просто когда избавлялся от ненужных функций для форума, забыл это дописать, исправил.

Добавлено через 65 часов 29 минут
Я зол. Оказалось надо было при компиляции флешки поменять доступ только к локальным файлам на доступ только к сети.:eek:

KVinS 16.09.2012 17:18

Проблема в кроссдоменке наверняка. Сам с ней намучался.
Прочитайте adobовский гайд по ней (легко гуглится)
http://help.adobe.com/ru_RU/as3/dev/..._serranozephyr
http://help.adobe.com/ru_RU/as3/dev/...8a9b90204-7cf7
А у вас кстати порты не прописаны...


Часовой пояс GMT +4, время: 11:52.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.