Всем доброго времени суток.
Проблема в кратце: делаю клиент на АS3 а сервер на С#. Вообщем создаю сокет соединение и локально все хорошо соединяется. Но когда прописываю внешний IP соединение обрывается. Полазил в Нэте почитал понял что требуется файл политики. Как описано для этого Flash создает еще одно соединение чтобы получить его на порт 843 или с помощь функции Security.loadPolicyFile на любой порт.
Вот собственно клиент (вырезал почти все, оставил только то что должно соединять) и сервер.
как я понимаю Security.loadPolicyFile должна с меня потребовать файл политики т.е. прислать сообщение, но для этого хотя бы надо присоединится... чего я вообще не наблюдаю судя по логу, а только сокет соединение которое конечно же сразу отваливается.
Хотелось бы просто получить устойчивое соединение. Дальше с данными разберусь как нить
Програмирую не давно, не бить за сумбурность кода

Код AS3:
package
{
import flash.display.Sprite;
import flash.events.*;
import flash.text.*;
import flash.net.Socket;
import flash.system.Security;
public class Main extends Sprite
{
var soket:Socket;
public function Main():void
{
soket = new Socket();
function onMouseDown(e:MouseEvent):void
{
soket.addEventListener(Event.CONNECT, conection);
try
{
Security.loadPolicyFile("xmlsocket://46.38.28.183:843");
soket.connect( "46.38.28.183", 843);
}
catch(e:Error)
{
trace(e);
}
}
}
function conection(e:Event):void
{
}
}
}
А это сервер
Main

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Threading;
namespace SocketServer
{
class Program
{
static void Main(string[] args)
{
IPHostEntry host = Dns.GetHostEntry("192.168.0.101");
IPAddress ip = host.AddressList[0];
TcpListener tcp = new TcpListener(ip,843);
tcp.Start();
Console.WriteLine("Ждем подключений...");
while (true)
{
TcpClient ctcp = tcp.AcceptTcpClient();
Console.WriteLine("Чего то приконектилось");
ClientHandler cHandle = new ClientHandler();
cHandle.clientSocket = ctcp;
Thread cThread = new Thread(new ThreadStart(cHandle.RunClient));
cThread.Start();
}
}
}
}
Класс ClientHandler

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.IO;
namespace SocketServer
{
class ClientHandler
{
public TcpClient clientSocket;
private string readData;
public void RunClient()
{
BinaryReader readSt = new BinaryReader(clientSocket.GetStream());
// NetworkStream writeSt = clientSocket.GetStream();
while (true)
{
try
{
readData = readSt.ReadString();// <---- здесь обрыв
Console.WriteLine(readData);
}
catch (Exception e)
{
Console.WriteLine(e);
break;
}
}
clientSocket.Close();
}
}
}