Клиент + Сервер

Вопросы по программированию, не подходящие в другие разделы.

Модераторы: Naeel Maqsudov, C_O_D_E

Ответить
123456789igor
Сообщения: 7
Зарегистрирован: 27 фев 2013, 23:03

Привет всем! Пишу простой клиент+сервер. Сервер генерит рандомное число каждую секунду и отправляет это число клиенту, клиент просто выводит числа на экран(в реальном времени) Столкнулся с таким: Невозможно вычислить выражение, поскольку фрейм машинного кода находится на вершине стека вызовов. И это пишется везде, в смысле приложение вроде бы как работает, но на самом деле висит. А вот ошибка эта в отладчике, на пример в переменной sListener типа Socket Сервер:

Код: Выделить всё

namespace WindowsFormsApplication1 
{ 
public partial class Form1 : Form 
{ 
Random rnd = new Random(); 
public Form1() { Server(); 
InitializeComponent(); 
} 
public void Server() 
{ 
IPHostEntry ipHost = Dns.GetHostEntry("localhost"); 
IPAddress ipAddr = ipHost.AddressList[1]; 
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);
            Socket sListener = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

            try
            {
                sListener.Bind(ipEndPoint);
                sListener.Listen(10);

                while (true)
                {
                    //label4.Text = "Ожидаем соединение через порт: " + ipEndPoint;

                    Socket handler = sListener.Accept();
                    string data = null;

                    string reply = label3.Text;

                    byte[] msg = Encoding.UTF8.GetBytes(reply);
                    handler.Send(msg);

                    if (data.IndexOf("<TheEnd>") > -1)
                    {
                        label4.Text = "Сервер завершил соединение с клиентом.";
                        break;
                    }

                    handler.Shutdown(SocketShutdown.Both);
                    handler.Close();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                Console.ReadLine();
            }
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            int temp = rnd.Next(7000, 12000);
            label3.Text = Convert.ToString(temp);
        }
    }
}
Ответить