Я сделал короткую программу, в которой пользователь вводит IP-адрес компьютера, и программа переходит к проверке, находится ли компьютер в сети, пытаясь подключиться к нему с портом 80 (предполагается, что если компьютер включен, он подключен к Интернету).Программа сокетов Замораживание
Проблема заключается в том, что каждый раз, когда я нажимаю кнопку «Пуск», она ничего не делает в течение нескольких секунд, а затем сбой.
Вот код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace Online_Checker
{
public partial class Form1 : Form
{
int success;
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
IPEndPoint ep = new IPEndPoint(IPAddress.Parse(ipAddress.Text), 80);
while (true)
{
success = 1;
try { client.Connect(ep); }
catch { status.BackColor = Color.Red; status.Text = "OFFLINE"; success = 0; }
if (success == 1)
{
status.BackColor = Color.Red;
status.Text = "ONLINE";
client.Close();
}
Thread.Sleep(5000);
}
}
}
}
Как вы можете видеть, я даже сделал задержку 5 секунд между каждой проверки, чтобы убедиться, что он не откажет.
Итак, в чем проблема? И как я могу это решить?
Когда вы говорите, что это сует, какая ошибка? – Mark
Вы поймали какие-то исключения? – OmniOwl
Ошибка. Я просто нажимаю кнопку запуска, кнопка запуска замораживается, и вся форма зависает. Даже если он иногда не падает после нескольких секунд, он переходит в режим «Не реагирует», и я ничего не могу сделать внутри него. Vipar, я поймал исключение подключения к сокету (чтобы проверить, включен или выключен компьютер), как вы можете видеть. – BlueRay101