0 / 0 / 0
Регистрация: 29.12.2018
Сообщений: 19
1

Ошибка Net.Sockets

16.06.2019, 05:36. Показов 1527. Ответов 9

Здравствуйте.
Есть клиент:
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Net.NetworkInformation;
using System.Net.Sockets;
 
namespace WindowsFormsApplication18
{
    public partial class Client : Form
    {
        Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        /// <summary>
        /// Timer Update (every 1 sec)
        /// </summary>
        private const double timerUpdate = 100;
 
        /// <summary>
        /// Interface Storage
        /// </summary>
        private NetworkInterface[] nicArr;
 
        /// <summary>
        /// Main Timer Object 
        /// (we could use something more efficient such 
        /// as interop calls to HighPerformanceTimers)
        /// </summary>
        private Timer timer;
 
        /// <summary>
        /// Constructor
        /// </summary>
        public Client()
        {
            InitializeComponent();
            InitializeNetworkInterface();
            InitializeTimer();
        }
 
 
        /// <summary>
        /// Initialize all network interfaces on this computer
        /// </summary>
        private void InitializeNetworkInterface()
        {
            // Grab all local interfaces to this computer
            nicArr = NetworkInterface.GetAllNetworkInterfaces();
 
            // Add each interface name to the combo box
            for (int i = 0; i < nicArr.Length; i++)
                cmbInterface.Items.Add(nicArr[i].Name);
 
            // Change the initial selection to the first interface
            cmbInterface.SelectedIndex = 0;
        }
 
        /// <summary>
        /// Initialize the Timer
        /// </summary>
        private void InitializeTimer()
        {
            timer = new Timer();
            timer.Interval = (int)timerUpdate;
            timer.Tick += new EventHandler(timer_Tick);
            timer.Start();
        }
 
        /// <summary>
        /// Update GUI components for the network interfaces
        /// </summary>
        private void UpdateNetworkInterface()
        {
            // Grab NetworkInterface object that describes the current interface
            NetworkInterface nic = nicArr[cmbInterface.SelectedIndex];
 
            // Grab the stats for that interface
            IPv4InterfaceStatistics interfaceStats = nic.GetIPv4Statistics();
            int KBreceived = (int)(interfaceStats.BytesReceived  / 1024);
            int KBSent = (int)(interfaceStats.BytesSent/ 1024);
            int MBreceived = (int)(interfaceStats.BytesReceived / 1024 / 1024);
            int MBSent = (int)(interfaceStats.BytesSent / 1024 / 1024);
            int KBSpeed = (int)(nic.Speed) / 1024;
            int MBSpeed = (int)(nic.Speed) / 1024 / 1024;   
            lblInterfaceType.Text = nic.NetworkInterfaceType.ToString();
            //Выводим значение скорости
            lblBSpeed.Text = nic.Speed.ToString() + " B/s";
            lblKBSpeed.Text = KBSpeed.ToString() + " Kb/s";
            lblMBSpeed.Text = MBSpeed.ToString() + " Mb/s";
            //Выводим использованный трафик где B = Byte KB = Kilobyte MB = Megabyte
            lblBReceived.Text = interfaceStats.BytesReceived.ToString() + " Байт";
            lblBSend.Text = interfaceStats.BytesSent.ToString() + " Байт";
            lblKBReceived.Text = KBreceived.ToString() + " Килобайт"; ;
            lblKBSent.Text = KBSent.ToString() + " Килобайт"; ;
            lblMBReceived.Text = MBreceived.ToString() + " Мегабайт"; ;
            lblMBSent.Text = MBSent.ToString() + " Мегабайт"; ;
            var textTraffic = string.Join
                (Environment.NewLine,
                            "Получено/Отправлено",
                            " ",
                            "Байт",
                            lblBReceived.Text,
                            lblBSend.Text,
                            " ",
                            "Килобайт",
                            lblKBReceived.Text,
                            lblKBSent.Text,
                            " ",
                            "Мегабайт",
                            lblMBReceived.Text,
                            lblMBSent.Text);
            File.WriteAllText(@"C:\Users\invoker\Desktop\text.txt", textTraffic);
            // Создаём массивы для передачи по протоколу TCP.
            byte[] ReceivedByte = Encoding.ASCII.GetBytes(lblBReceived.Text);
            byte[] SendByte = Encoding.ASCII.GetBytes(lblBSend.Text);
            byte[] ReceivedKByte = Encoding.ASCII.GetBytes(lblBReceived.Text);
            byte[] SendKByte = Encoding.ASCII.GetBytes(lblBSend.Text);
            byte[] ReceivedMByte = Encoding.ASCII.GetBytes(lblBReceived.Text);
            byte[] SendMByte = Encoding.ASCII.GetBytes(lblBSend.Text);
            byte[] SpeedByte = Encoding.ASCII.GetBytes(lblBSpeed.Text);
            byte[] SpeedKByte = Encoding.ASCII.GetBytes(lblKBSpeed.Text);
            byte[] SpeedMByte = Encoding.ASCII.GetBytes(lblMBSpeed.Text);
            socket.Send(ReceivedByte);
            socket.Send(SendByte);
            socket.Send(ReceivedKByte);
            socket.Send(SendKByte);
            socket.Send(ReceivedMByte);
            socket.Send(SendMByte);
            socket.Send(SpeedByte);
            socket.Send(SpeedKByte);
            socket.Send(SpeedMByte);
        }
        /// <summary>
        /// The Timer event for each Tick (second) to update the UI
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void timer_Tick(object sender, EventArgs e)
        {
            UpdateNetworkInterface();
        }
        private void Client_Load(object sender, EventArgs e)
        {
            socket.Connect("127.0.0.1", 8888);
        }
    }
}
Есть сервер:
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
96
97
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Sockets;
using System.Net;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApp1
{
    public partial class Server : Form
    {
        Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        public Server()
        {
            InitializeComponent();
            InitializeTimer();
        }
 
        private const double timerUpdate = 10000;
        private Timer timer;
        private void InitializeTimer()
        {
            timer = new Timer();
            timer.Interval = (int)timerUpdate;
            timer.Tick += new EventHandler(timer_Tick);
            timer.Start();
            socket.Bind(new IPEndPoint(IPAddress.Any, 8888));
            socket.Listen(10);
            socket.Accept();
        }
        private void Server_Load(object sender, EventArgs e)
        {
 
            // доступно ли сетевое подключение
            if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
                return;
            // запросить у DNS-сервера IP-адрес, связанный с именем узла
            var host = Dns.GetHostEntry(Dns.GetHostName());
            // Пройдем по списку IP-адресов, связанных с узлом
            foreach (var ip in host.AddressList)
            {
                // если текущий IP-адрес версии IPv4, то выведем его 
                if (ip.AddressFamily == AddressFamily.InterNetwork)
                {
                    listBox1.Items.Add(ip.ToString());
                }
            }
 
        }
        private void UpdateNetworkInterface()
        {
            byte[] ReceivedByte = new byte[10024];
            socket.Receive(ReceivedByte);
            label1.Text = Encoding.ASCII.GetString(ReceivedByte);
 
            byte[] SendByte = new byte[10240];
            socket.Receive(SendByte);
            label1.Text = Encoding.ASCII.GetString(SendByte);
 
            byte[] ReceivedKByte = new byte[10240];
            socket.Receive(ReceivedKByte);
            label1.Text = Encoding.ASCII.GetString(ReceivedKByte);
 
            byte[] SendKByte = new byte[10240];
            socket.Receive(SendKByte);
            label1.Text = Encoding.ASCII.GetString(SendKByte);
 
            byte[] ReceivedMByte = new byte[10240];
            socket.Receive(ReceivedMByte);
            label1.Text = Encoding.ASCII.GetString(ReceivedMByte);
 
            byte[] SendMByte = new byte[10240];
            socket.Receive(SendMByte);
            label1.Text = Encoding.ASCII.GetString(SendMByte);
 
            byte[] SpeedByte = new byte[10240];
            socket.Receive(SpeedByte);
            label1.Text = Encoding.ASCII.GetString(SpeedByte);
            byte[] SpeedKByte = new byte[10240];
            socket.Receive(SpeedByte);
            label1.Text = Encoding.ASCII.GetString(SpeedKByte);
            byte[] SpeedMByte = new byte[10240];
            socket.Receive(SpeedByte);
            label1.Text = Encoding.ASCII.GetString(SpeedKByte);
        }
        void timer_Tick(object sender, EventArgs e)
        {
            UpdateNetworkInterface();
        }
    }
}
Когда запускаю сервер, после клиент. Как только таймер тикает выдаёт ошибку. Как исправить?
Миниатюры
Ошибка Net.Sockets   Ошибка Net.Sockets  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.06.2019, 05:36
Ответы с готовыми решениями:

Ошибка Selenium System.Net.Sockets.SocketException: Невозможно соединиться с удаленным сервером
Я использую Selenium для 9000 файлов.Во время скачки бывает вылазит такая ошибка...

Как правильно подружить System.Net.Sockets и System.Net.WebSockets?
К примеру есть 2 разных проекта: 1. Чат с веб-мордой (Веб-приложение) 2. Консольный чат...

Как выгрузить объекты System.Net.Sockets
Здравствуйте специалисты. Помогите разобраться с примером работы двух программок для обмена по...

Не получается подключиться к внешнему IP адресу используя System.Net.Sockets
Здравствуйте, пишу просто TCP/IP приложение чатик, сделал так, чтобы клиент и сервер могли...

9
Эксперт .NET
16371 / 12332 / 3237
Регистрация: 17.09.2011
Сообщений: 20,473
16.06.2019, 09:45 2
Перенесите запуск таймера из конструктора в обработчик загрузки формы — после строки, где производится соединение.
0
0 / 0 / 0
Регистрация: 29.12.2018
Сообщений: 19
16.06.2019, 11:57  [ТС] 3
Вы имеете ввиду на сервере на клиенте или на обоих формах?
0
Эксперт .NET
16371 / 12332 / 3237
Регистрация: 17.09.2011
Сообщений: 20,473
16.06.2019, 12:08 4
DiaDemis, на клиенте, но на сервере та же проблема, просто вы ее не заметите из-за интервала.
Вы ведь сначала запускаете таймер, а потом уже начинаете работу с сокетом.
Что будет, если таймер тикнет раньше, чем сокет будет открыт? Будет ошибка.
На сервере это вряд ли произойдет (хотя и не исключено), т.к. там задержка таймера 10 секунд, а вот на стороне клиента таймер тикает с интервалом всего в 100мс, при этом таймер запускается сразу же после создания объекта, а сокет открывается только после загрузки формы.
Сначала открывайте соединение, а потом уже запускайте таймеры, которые с этим соединением работают.
0
0 / 0 / 0
Регистрация: 29.12.2018
Сообщений: 19
16.06.2019, 12:34  [ТС] 5
Теперь такая проблема
Миниатюры
Ошибка Net.Sockets  
0
0 / 0 / 0
Регистрация: 29.12.2018
Сообщений: 19
16.06.2019, 13:20  [ТС] 6
Ладно я переделал клиент и сервер заново но теперь сервер виснет когда нажимаю на button
Клиент:
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
96
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Net.NetworkInformation;
using System.Net.Sockets;
 
namespace WindowsFormsApplication18
{
    public partial class Form1 : Form
    {
        static Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        private void Form1_Load(object sender, EventArgs e)
        {
            socket.Connect("172.20.10.2", 8000);
            byte[] SendB = Encoding.ASCII.GetBytes(lblBSend.Text);
            socket.Send(SendB);
        }
        private const double timerUpdate = 1;
        private NetworkInterface[] nicArr;
        private Timer timer;
 
        public Form1()
        {
            InitializeComponent();
            InitializeNetworkInterface();
            InitializeTimer();
        }
 
        private void InitializeNetworkInterface()
        {
            nicArr = NetworkInterface.GetAllNetworkInterfaces();
            for (int i = 0; i < nicArr.Length; i++)
                cmbInterface.Items.Add(nicArr[i].Name);
            cmbInterface.SelectedIndex = 0;
        }
 
        private void InitializeTimer()
        {
            timer = new Timer();
            timer.Interval = (int)timerUpdate;
            timer.Tick += new EventHandler(timer_Tick);
            timer.Start();
        }
 
        private void UpdateNetworkInterface()
        {
            NetworkInterface nic = nicArr[cmbInterface.SelectedIndex];
            IPv4InterfaceStatistics interfaceStats = nic.GetIPv4Statistics();
            int KBreceived = (int)(interfaceStats.BytesReceived  / 1024);
            int KBSent = (int)(interfaceStats.BytesSent/ 1024);
            int MBreceived = (int)(interfaceStats.BytesReceived / 1024 / 1024);
            int MBSent = (int)(interfaceStats.BytesSent / 1024 / 1024);
            int KBSpeed = (int)(nic.Speed) / 1024;
            int MBSpeed = (int)(nic.Speed) / 1024 / 1024;   
            lblInterfaceType.Text = nic.NetworkInterfaceType.ToString();
            //Выводим значение скорости
            lblBSpeed.Text = nic.Speed.ToString() + " B/s";
            lblKBSpeed.Text = KBSpeed.ToString() + " Kb/s";
            lblMBSpeed.Text = MBSpeed.ToString() + " Mb/s";
            //Выводим использованный трафик где B = Byte KB = Kilobyte MB = Megabyte
            lblBReceived.Text = interfaceStats.BytesReceived.ToString() + " Байт";
            lblBSend.Text = interfaceStats.BytesSent.ToString() + " Байт";
            lblKBReceived.Text = KBreceived.ToString() + " Килобайт";
            lblKBSent.Text = KBSent.ToString() + " Килобайт";
            lblMBReceived.Text = MBreceived.ToString() + " Мегабайт";
            lblMBSent.Text = MBSent.ToString() + " Мегабайт";
            var textTraffic = string.Join
                (Environment.NewLine,
                            "Получено/Отправлено",
                            " ",
                            "Байт",
                            lblBReceived.Text,
                            lblBSend.Text,
                            " ",
                            "Килобайт",
                            lblKBReceived.Text,
                            lblKBSent.Text,
                            " ",
                            "Мегабайт",
                            lblMBReceived.Text,
                            lblMBSent.Text);
            File.WriteAllText(@"C:\Users\invoker\Desktop\text.txt", textTraffic);
        }
        void timer_Tick(object sender, EventArgs e)
        {
            UpdateNetworkInterface();
        }
    }
}
Сервер
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        static Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            socket.Bind(new IPEndPoint(IPAddress.Any, 904));
            socket.Listen(5);
            socket.Accept();
            byte[] SendB = new byte[1024];
            socket.Receive(SendB);
            label1.Text = Encoding.ASCII.GetString(SendB);
        }
    }
}
0
0 / 0 / 0
Регистрация: 29.12.2018
Сообщений: 19
16.06.2019, 13:38  [ТС] 7
Всё в одно упирается
На Сервере выдаёт ошибку Запрос на отправку или получение данных (when sending on a datagram socket using a sendto call) no address was supplied

Клиент:
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Net.NetworkInformation;
using System.Net.Sockets;
 
namespace WindowsFormsApplication18
{
    public partial class Form1 : Form
    {
        static Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        
        private const double timerUpdate = 1;
        private NetworkInterface[] nicArr;
        private Timer timer;
        public Form1()
        {
            InitializeComponent();
            InitializeNetworkInterface();
            InitializeTimer();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            socket.Connect("172.20.10.2", 8000);
        }
        private void InitializeNetworkInterface()
        {
            nicArr = NetworkInterface.GetAllNetworkInterfaces();
            for (int i = 0; i < nicArr.Length; i++)
                cmbInterface.Items.Add(nicArr[i].Name);
            cmbInterface.SelectedIndex = 0;
        }
 
        private void InitializeTimer()
        {
            timer = new Timer();
            timer.Interval = (int)timerUpdate;
            timer.Tick += new EventHandler(timer_Tick);
            timer.Start();
        }
 
        private void UpdateNetworkInterface()
        {
            NetworkInterface nic = nicArr[cmbInterface.SelectedIndex];
            IPv4InterfaceStatistics interfaceStats = nic.GetIPv4Statistics();
            int KBreceived = (int)(interfaceStats.BytesReceived  / 1024);
            int KBSent = (int)(interfaceStats.BytesSent/ 1024);
            int MBreceived = (int)(interfaceStats.BytesReceived / 1024 / 1024);
            int MBSent = (int)(interfaceStats.BytesSent / 1024 / 1024);
            int KBSpeed = (int)(nic.Speed) / 1024;
            int MBSpeed = (int)(nic.Speed) / 1024 / 1024;   
            lblInterfaceType.Text = nic.NetworkInterfaceType.ToString();
            //Выводим значение скорости
            lblBSpeed.Text = nic.Speed.ToString() + " B/s";
            lblKBSpeed.Text = KBSpeed.ToString() + " Kb/s";
            lblMBSpeed.Text = MBSpeed.ToString() + " Mb/s";
            //Выводим использованный трафик где B = Byte KB = Kilobyte MB = Megabyte
            lblBReceived.Text = interfaceStats.BytesReceived.ToString() + " Байт";
            lblBSend.Text = interfaceStats.BytesSent.ToString() + " Байт";
            lblKBReceived.Text = KBreceived.ToString() + " Килобайт";
            lblKBSent.Text = KBSent.ToString() + " Килобайт";
            lblMBReceived.Text = MBreceived.ToString() + " Мегабайт";
            lblMBSent.Text = MBSent.ToString() + " Мегабайт";
            var textTraffic = string.Join
                (Environment.NewLine,
                            "Получено/Отправлено",
                            " ",
                            "Байт",
                            lblBReceived.Text,
                            lblBSend.Text,
                            " ",
                            "Килобайт",
                            lblKBReceived.Text,
                            lblKBSent.Text,
                            " ",
                            "Мегабайт",
                            lblMBReceived.Text,
                            lblMBSent.Text);
            File.WriteAllText(@"C:\Users\invoker\Desktop\text.txt", textTraffic);
            byte[] SendB = Encoding.UTF8.GetBytes(lblBSend.Text);
            socket.Send(SendB);
        }
        void timer_Tick(object sender, EventArgs e)
        {
            UpdateNetworkInterface();
        }
    }
}
Сервер:
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        static Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            socket.Bind(new IPEndPoint(IPAddress.Any, 8000));
            socket.Listen(1000);
            socket.Accept();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            byte[] SendB = new byte[1024];
            socket.Receive(SendB);
            label1.Text = Encoding.UTF8.GetString(SendB);
        }
    }
}
Миниатюры
Ошибка Net.Sockets  
0
Эксперт .NET
16371 / 12332 / 3237
Регистрация: 17.09.2011
Сообщений: 20,473
16.06.2019, 14:05 8
Цитата Сообщение от DiaDemis Посмотреть сообщение
Теперь такая проблема
Если обновленный код в предыдущем сообщении, то указанные косяки в нем не исправлены: таймер все так же стартует до открытия соединения.

Цитата Сообщение от DiaDemis Посмотреть сообщение
теперь сервер виснет когда нажимаю на button
Потому что там блокирующее чтение.
Если не хотите блокирования потоков, то переписывайте под асинхронную модель.
1
0 / 0 / 0
Регистрация: 29.12.2018
Сообщений: 19
16.06.2019, 15:29  [ТС] 9
Скину исходники может кто поможет. Совсем не понимаю.
Мне нужно что-бы сервер собирал данные от клиента и обновлял их по таймеру с тиком в 5с

А сейчас он у меня выводит значение только 1 раз и через некоторое время зависает клиент.

Клиент:
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Net.NetworkInformation;
using System.Net.Sockets;
 
namespace WindowsFormsApplication18
{
    public partial class Form1 : Form
    {
        static Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        
        private const double timerUpdate = 1;
        private NetworkInterface[] nicArr;
        private Timer timer;
        public Form1()
        {
            InitializeComponent();
            InitializeNetworkInterface();
            InitializeTimer();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            socket.Connect("172.20.10.2", 8000);
            timer.Start();
        }
        private void InitializeTimer()
        {
            timer = new Timer();
            timer.Interval = (int)timerUpdate;
            timer.Tick += new EventHandler(timer_Tick);
        }
        private void InitializeNetworkInterface()
        {
            
            nicArr = NetworkInterface.GetAllNetworkInterfaces();
            for (int i = 0; i < nicArr.Length; i++)
                cmbInterface.Items.Add(nicArr[i].Name);
            cmbInterface.SelectedIndex = 0;
        }
 
        private void UpdateNetworkInterface()
        {
            NetworkInterface nic = nicArr[cmbInterface.SelectedIndex];
            IPv4InterfaceStatistics interfaceStats = nic.GetIPv4Statistics();
            int KBreceived = (int)(interfaceStats.BytesReceived  / 1024);
            int KBSent = (int)(interfaceStats.BytesSent/ 1024);
            int MBreceived = (int)(interfaceStats.BytesReceived / 1024 / 1024);
            int MBSent = (int)(interfaceStats.BytesSent / 1024 / 1024);
            int KBSpeed = (int)(nic.Speed) / 1024;
            int MBSpeed = (int)(nic.Speed) / 1024 / 1024;   
            lblInterfaceType.Text = nic.NetworkInterfaceType.ToString();
            //Выводим значение скорости
            lblBSpeed.Text = nic.Speed.ToString() + " B/s";
            lblKBSpeed.Text = KBSpeed.ToString() + " Kb/s";
            lblMBSpeed.Text = MBSpeed.ToString() + " Mb/s";
            //Выводим использованный трафик где B = Byte KB = Kilobyte MB = Megabyte
            lblBReceived.Text = interfaceStats.BytesReceived.ToString() + " Байт";
            lblBSend.Text = interfaceStats.BytesSent.ToString() + " Байт";
            lblKBReceived.Text = KBreceived.ToString() + " Килобайт";
            lblKBSent.Text = KBSent.ToString() + " Килобайт";
            lblMBReceived.Text = MBreceived.ToString() + " Мегабайт";
            lblMBSent.Text = MBSent.ToString() + " Мегабайт";
 
            byte[] SendB = Encoding.UTF8.GetBytes(lblBSend.Text);
            socket.Send(SendB);
        }
        void timer_Tick(object sender, EventArgs e)
        {
            UpdateNetworkInterface();
        }
    }
}
Сервер:
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        static Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 
        private void Form1_Load(object sender, EventArgs e)
        {
            socket.Bind(new IPEndPoint(IPAddress.Any, 8000));
            socket.Listen(10);
            byte[] SendB = new byte[10000];
            int byteRead = socket.Accept().Receive(SendB);
            label1.Text = Encoding.UTF8.GetString(SendB);
        }
    }
}
Вложения
Тип файла: rar windowsFormsApplication.rar (87.6 Кб, 1 просмотров)
0
0 / 0 / 0
Регистрация: 29.12.2018
Сообщений: 19
16.06.2019, 15:36  [ТС] 10
Там где кнопка(Не должна функционировать просто для теста)
Сервер

А Где стата Клиент, нужно что-бы на сервер парсилось значение из клиента с полученными байтами

А я думал что это легче намного >.<
Миниатюры
Ошибка Net.Sockets   Ошибка Net.Sockets  
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2019, 15:36
Помогаю со студенческими работами здесь

Sockets , IPAddress
Имею такой вот фрагмент кода : IPAddress ipa = Dns.GetHostAddresses(&quot;Q-PC&quot;); ...

Оптимизация производительности C#.NET (Алгоритм, Многопоточность, Debug, Release, .Net Core, Net Native)
Решил поделится своим небольшим опытом по оптимизации вычислений на C#.NET. НЕ профи, палками не...

Объясните на пальцах совместимость библиотек в .Net Core, .Net Framework, .Net Standart
Изучаю .Net. Хочу написать некое серверное приложение (думаю что учеба лучше на реальном примере,...

NET 3.5 Ошибка на ровном месте
namespace ConsoleApplication1 { public class statistic { static void Mine() {...

.NET Reactor - ошибка обфускация
Всем доброго времени суток,собственно столкнулся с одно проблемой,а именно при добавление в...

БПФ с использованием AForge.NET: ошибка при применении преобразования
Вообщем программа до невозможного проста: Загружаю изображение, делаю БПФ над ним с помощью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru