powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Чат по локальной сети. Выводит исключение. В чем ошибка?
2 сообщений из 2, страница 1 из 1
Чат по локальной сети. Выводит исключение. В чем ошибка?
    #37637268
Levenguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал клиент-серверный чат, который передает сообщения по локальной сети, на wpf
Вот код сервера:
Код: 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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;

namespace server
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Thread Access = new Thread(new ThreadStart(getaccess));
            Access.IsBackground = true;
            Access.Start();
        }

        private void getaccess()
        {
            TcpListener listener = new TcpListener(IPAddress.Parse("10.5.24.11"), 2002);
            listener.Start();
            while (true)
            {
                TcpClient client = listener.AcceptTcpClient();
                StreamReader sr = new StreamReader(client.GetStream());
                Execute(sr.ReadLine());
                client.Close();
            }
        }

        private void send(string message)
        {
            TcpClient client = new TcpClient();
            try
            {
                client.Connect(IPAddress.Parse("10.5.24.11"), 2001);
                StreamWriter sw = new StreamWriter(client.GetStream());
                sw.AutoFlush = true;
                sw.WriteLine(message);
            }
            catch
            {
                MessageBox.Show("Ошибка при подключении к Client.exe server");
            }
            client.Close();
        }

        private void Execute(string data)
        {
            Dispatcher.Invoke((Action)(() => this.textBox1.Text = data));
            send(data);
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            send(textBox1.Text);
        }
    }
}



Вот код клиента:
Код: 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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;

namespace client1
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Thread Access = new Thread(new ThreadStart(getaccess));
            Access.IsBackground = true;
            Access.Start();
        }

        private void getaccess()
        {
            TcpListener listener = new TcpListener(IPAddress.Parse("10.5.24.11"), 2001);
            listener.Start();
            while (true)
            {
                TcpClient client = listener.AcceptTcpClient();
                StreamReader sr = new StreamReader(client.GetStream());
                Execute(sr.ReadLine());
                client.Close();
            }
        }

        private void send(string message)
        {
            TcpClient client = new TcpClient();
            try
            {
                client.Connect(IPAddress.Parse("10.5.24.11"), 2002);
                StreamWriter sw = new StreamWriter(client.GetStream());
                sw.AutoFlush = true;
                sw.WriteLine(message);
            }
            catch
            {
                MessageBox.Show("Ошибка при подключении к Client.exe");
            }
            client.Close();
        }

        private void Execute(string data)
        {
            Dispatcher.Invoke((Action)(() => this.textBox2.Text = data));
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            send(textBox1.Text);
        }
    }
}



C одной программой-клиентом все нормально, но когда запускаю вторую копию клиента выводит исключение в строке
Код: c#
1.
listener.Start();



С сообщением:
"Необработанное исключение типа "System.Net.Sockets.SocketException" произошло в System.dll

Дополнительные сведения: Обычно разрешается только одно использование адреса сокета (протокол/сетевой адрес/порт)"

Как исправить эту ошибку? Чтобы программа-сервер могла обмениваться сообщениями с несколькими программами-клиентами по локальной сети?
...
Рейтинг: 0 / 0
Чат по локальной сети. Выводит исключение. В чем ошибка?
    #37637389
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Levenguk,

авторКак исправить эту ошибку?
Читать литературу про программированию сокетов.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Чат по локальной сети. Выводит исключение. В чем ошибка?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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