Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > чат на с#


Автор: vadiliy 24.6.2014, 17:11
Всем привет, вот решил написать чат, но столкнулся с такой проблемой: он работает только на локальной машине и по локальной сети, когда бросаю его другу (меняя в исходном коде ip разумеется) ничего не работает (клиент и сервер не могут соединится), посмотрите исходник и подскажите пожалуйста, что не так.

Это сервер, он находится на моем компьютере.

Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Threading;


namespace с_шарп
{
    class Program
    {

        static void Main(string[] args)
        {

            int port = 11000;
            IPAddress ip = IPAddress.Any;
            IPEndPoint end = new IPEndPoint(ip, port);

            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            
            s.Bind(end);
            s.Listen(2);
            Socket d = s.Accept();

            Console.WriteLine("Connect");
            byte[] msg = new byte[20];
            string a;
          d.Receive(msg);

            a = Encoding.ASCII.GetString(msg);

            Console.WriteLine(a);
          
            Console.ReadLine();
            d.Close();
            s.Close();
        }

    }
}




А вот это клиент, он у моего друга:


Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Threading;
using System.IO;


namespace client
{
    class Program
    {
        
        static void Main(string[] args)
        {

            int port = 11000;
            IPAddress ip = IPAddress.Parse("91.216.133.235"); // мой внешний ip
            IPEndPoint end = new IPEndPoint(ip, port);

            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
   
            byte[] msg = new byte[20];
            s.Connect(end);
            Console.WriteLine("connect");
            string a = Console.ReadLine();
            msg = ASCIIEncoding.ASCII.GetBytes(a);
            s.Send(msg);
                

            Console.ReadLine();
            
            s.Close();

         }

       
    }
}


Автор: jonie 24.6.2014, 18:46
А вы часом не за NAT? Или быть может у вас там firewall-ы ? Или быть может у вас там еще что-то вроде pp2p туннелирования с обрезкой чего не надо сервером...

Автор: Miller_time 30.7.2014, 17:31
1. На роуторе порты из вне прокиньте (на серверной части)
2. В брандмауре тоже прокиньте порты

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)