Имеется роутер D-Link DIR-300NRU rev.B7.
Порты не открываются: UPnP включил, виртуальные сервера добавил.
Сохранил, ребутнул, нет изменений. Так же, на всякий добавил в исключения брандмауэра.
Нашел инфу, что торрент открывает определённый порт, пока запущен. Попробовал передать сообщение через открытый порт - 55585.
Сервер:
TcpListener server = null;
try
{
Int32 port = 55585;
IPAddress localAddr = IPAddress.Parse("127.0.0.1");
server = new TcpListener(localAddr, port);
server.Start();
Byte[] bytes = new Byte[256];
String data = null;
while (true)
{
Console.Write("Waiting for a connection... ");
TcpClient client = server.AcceptTcpClient();
Console.WriteLine("Connected!");
data = null;
NetworkStream stream = client.GetStream();
int i;
while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
{
data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
Console.WriteLine("Received: {0}", data);
byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);
stream.Write(msg, 0, msg.Length);
Console.WriteLine("Sent: {0}", data);
}
client.Close();
}
}
catch (SocketException e)
{
Console.WriteLine("SocketException: {0}", e);
}
finally
{
server.Stop();
}
Console.WriteLine("\nHit enter to continue...");
Console.Read();
Клиент:
static void Main(string[] args)
{
try
{
string tmp1 = Console.ReadLine();
string tmp = Console.ReadLine();
Connect(tmp1, tmp);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
Console.ReadLine();
}
}
static void Connect(String server, String message)
{
try
{
Int32 port = 55585;
TcpClient client = new TcpClient(server, port);
Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);
NetworkStream stream = client.GetStream();
stream.Write(data, 0, data.Length);
Console.WriteLine("Sent: {0}", message);
data = new Byte[256];
String responseData = String.Empty;
Int32 bytes = stream.Read(data, 0, data.Length);
responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
Console.WriteLine("Received: {0}", responseData);
stream.Close();
client.Close();
}
catch (ArgumentNullException e)
{
Console.WriteLine("ArgumentNullException: {0}", e);
}
catch (SocketException e)
{
Console.WriteLine("SocketException: {0}", e);
}
Console.WriteLine("\n Press Enter to continue...");
Console.Read();
}
Естественно, пробовал через UDP и разные исходники в сети, один и тот же результат:
Через локалхост работает независимо от порта, что было ожидаемо.
Если вводить действительный адрес, то получаю отказ.
Есть какие-то действенные варианты открытия порта или передачи данных без использования последнего?