powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / tcp/ip сервер + клиенты
4 сообщений из 4, страница 1 из 1
tcp/ip сервер + клиенты
    #38300450
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написал простенький tcp/ip сервер. Так вот появилась одна проблемка если сервер вылетил а потом его перезапустить то клиенты уже не реагируют и их тоже нужно перезапустить.

Так вот собственно вопрос как можна сделать так что бы клиенты не зависали а при перезагрузке сервера они начинали рабртать?

Спасибо
...
Рейтинг: 0 / 0
tcp/ip сервер + клиенты
    #38300487
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708Написал простенький tcp/ip сервер. Так вот появилась одна проблемка если сервер вылетил а потом его перезапустить то клиенты уже не реагируют и их тоже нужно перезапустить.

Так вот собственно вопрос как можна сделать так что бы клиенты не зависали а при перезагрузке сервера они начинали рабртать?

Спасибо

код клиента в студию
...
Рейтинг: 0 / 0
tcp/ip сервер + клиенты
    #38300512
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708,

чем коннектишься? сокетами?
...
Рейтинг: 0 / 0
tcp/ip сервер + клиенты
    #38300553
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pation,

Код:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
private string ServerHost = string.Empty;
        const int PORT_NUM = 23698;
        const int READ_BUFFER_SIZE = 255;
        private TcpClient client;
        private byte[] readBuffer = new byte[READ_BUFFER_SIZE];


 private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                if (File.Exists(ipadress))
                {
                    using (StreamReader sr = new StreamReader(ipadress))
                    {
                        ServerHost = sr.ReadLine();  //получаем IP сервера
                    }

                    try
                    {
                        client = new TcpClient(ServerHost, PORT_NUM);
                        client.GetStream().BeginRead(readBuffer, 0, READ_BUFFER_SIZE, new AsyncCallback(DoRead), null);
                    }
                    catch { return; }

                    AttemptLogin();

                    ico = new System.Drawing.Icon("info.ico");
                    notifyIcon1.Icon = ico;
                }
                else
                {
                    ico = new System.Drawing.Icon("warning.ico");
                    notifyIcon1.Icon = ico;
                }
            }
            catch
            {
                ico = new System.Drawing.Icon("warning.ico");
                notifyIcon1.Icon = ico;
            }
        }

private void DoRead(IAsyncResult ar)  // Вот в этой ф-ии и надо рестартануть клиента но что бы я не пробовал не работает
        {
            int BytesRead;
            string strMessage;

            try
            {
                if (client.Connected)
                {
                    BytesRead = client.GetStream().EndRead(ar);
                    if (BytesRead < 1)
                    {
                        return;
                    }
                    strMessage = Encoding.ASCII.GetString(readBuffer, 0, BytesRead);
                    ProcessCommands(strMessage);
                    client.GetStream().BeginRead(readBuffer, 0, READ_BUFFER_SIZE, new AsyncCallback(DoRead), null);
                }
            }
            catch
            {
            }
        }
// далее идут функции получения данных и отправки
 private void SendData(string data)
        {
            StreamWriter writer = new StreamWriter(client.GetStream());
            writer.Write(data);
            writer.Flush();
        }

        void AttemptLogin()
        {
            SendData("CONNECT|" + Environment.UserName);
        }

        private void ProcessCommands(string strMessage)
        {
            string[] dataArray;
            dataArray = strMessage.Split('|');
            switch (dataArray[0])
            {
                case "BROAD":
                    BeginInvoke(new ShowNotify(DisplayText),  new object[] { dataArray[1].ToString() });
                    break;
            }
        }

        private void DisplayText(string id)
        {
           //обработка на клиенте
        }
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / tcp/ip сервер + клиенты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]