Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
11 / 11 / 8
Регистрация: 18.09.2012
Сообщений: 514
1

Ошибка при передаче данных в клиент-серверном приложении

05.02.2019, 22:11. Показов 1564. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, вот код клиент-серверного приложения:
Клиент:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 private void button1_Click(object sender, EventArgs e)
        {
            Socket s;
            byte[] bytes = new byte[1024];
            IPHostEntry ipHost = Dns.Resolve("127.0.0.1");
            IPAddress ipAdr = ipHost.AddressList[0];
            IPEndPoint ipEndPoint = new IPEndPoint(ipAdr, 11000);
            s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            s.Connect(ipEndPoint);
            string str = listBox1.SelectedItem.ToString();
            byte[] bufIn = Encoding.ASCII.GetBytes(str);
            s.Send(bufIn);
            byte[] bufOut = new byte[1024];
            s.Receive(bufOut);
            textBox1.Text = "Время года "+Encoding.UTF8.GetString(bufOut);
 
        }
Сервер:
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
 IPAddress adr = Dns.Resolve("127.0.0.1").AddressList[0];
            IPEndPoint ipEnd = new IPEndPoint(adr, 11000);
            Socket Listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            Listener.Bind(ipEnd);
            Listener.Listen(10);
            Console.WriteLine("Ожидание соединения...");
            Socket s = Listener.Accept();
            while (true)
            {
                byte[] bufPol = new byte[1024];
                Listener.Receive(bufPol);
                string data = Encoding.UTF8.GetString(bufPol);
                switch (data)
                {
                    case "Январь":
                        {
                            string msg = "Зима";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            Listener.Send(bufOtp);
                            break;
                        }
                    case "Февраль":
                        {
                            string msg = "Зима";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            Listener.Send(bufOtp);
                            break;
                        }
                    case "Март":
                        {
                            string msg = "Весна";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            Listener.Send(bufOtp);
                            break;
                        }
                    case "Апрель":
                        {
                            string msg = "Весна";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            Listener.Send(bufOtp);
                            break;
                        }
                    case "Май":
                        {
                            string msg = "Весна";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            Listener.Send(bufOtp);
                            break;
                        }
                    case "Июнь":
                        {
                            string msg = "Лето";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            Listener.Send(bufOtp);
                            break;
                        }
                    case "Июль":
                        {
                            string msg = "Лето";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            Listener.Send(bufOtp);
                            break;
                        }
                    case "Август":
                        {
                            string msg = "Лето";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            Listener.Send(bufOtp);
                            break;
                        }
                    case "Сентябрь":
                        {
                            string msg = "Лето";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            Listener.Send(bufOtp);
                            break;
                        }
                    case "Октябрь":
                        {
                            string msg = "Лето";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            Listener.Send(bufOtp);
                            break;
                        }
                    case "Ноябрь":
                        {
                            string msg = "Лето";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            Listener.Send(bufOtp);
                            break;
                        }
                    case "Декабрь":
                        {
                            string msg = "Лето";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            Listener.Send(bufOtp);
                            break;
                        }
                }
                s.Close();
            }
               
        }
При передачи данных от клиента к серверу, получаю такую ошибку: System.Net.Sockets.SocketException: "Запрос на отправку или получение данных (when sending on a datagram socket using a sendto call) no address was supplied"

Как передать данные к серверу и вернуть от него ответ?

Добавлено через 2 часа 35 минут
Вот немного переделанный вариант, но теперь постоянно выдает дефолтное значение switch
клиент:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 private void button1_Click(object sender, EventArgs e)
        {
           
           
            
            byte[] bufIn = Encoding.UTF8.GetBytes(listBox1.SelectedItem.ToString());
            s.Send(bufIn);
            byte[] bufOut = new byte[1024];
            s.Receive(bufOut);
            textBox1.Text="";
            textBox1.Text = "Время года "+Encoding.UTF8.GetString(bufOut);
 
        }
сервер:
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
static void Main(string[] args)
        {
           
            IPAddress adr = Dns.Resolve("localhost").AddressList[0];
            IPEndPoint ipEnd = new IPEndPoint(adr, 8086);
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            s.Bind(ipEnd);
            s.Listen(10);
            Console.WriteLine("Ожидание соединения...");
            Socket lis = s.Accept();
            byte[] bufPol = new byte[1024];
            lis.Receive(bufPol);
            string data = Encoding.UTF8.GetString(bufPol);
            while (true)
            {
               switch (data)
                {
                    case "Январь":
                        {
                            string msg = "Зима";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            lis.Send(bufOtp);
                            Console.WriteLine("Отправлен ответ!");
                            break;
                        }
                    case "Февраль":
                        {
                            string msg = "Зима";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            lis.Send(bufOtp);
                            Console.WriteLine("Отправлен ответ!");
                            break;
                        }
                    case "Март":
                        {
                            string msg = "Весна";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            lis.Send(bufOtp);
                            Console.WriteLine("Отправлен ответ!");
                            break;
                        }
                    case "Апрель":
                        {
                            string msg = "Весна";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            lis.Send(bufOtp);
                            Console.WriteLine("Отправлен ответ!");
                            break;
                        }
                    case "Май":
                        {
                            string msg = "Весна";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            lis.Send(bufOtp);
                            Console.WriteLine("Отправлен ответ!");
                            break;
                        }
                    case "Июнь":
                        {
                            string msg = "Лето";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            lis.Send(bufOtp);
                            Console.WriteLine("Отправлен ответ!");
                            break;
                        }
                    case "Июль":
                        {
                            string msg = "Лето";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            lis.Send(bufOtp);
                            Console.WriteLine("Отправлен ответ!");
                            break;
                        }
                    case "Август":
                        {
                            string msg = "Лето";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            lis.Send(bufOtp);
                            break;
                        }
                    case "Сентябрь":
                        {
                            string msg = "Осень";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            lis.Send(bufOtp);
                            Console.WriteLine("Отправлен ответ!");
                            break;
                        }
                    case "Октябрь":
                        {
                            string msg = "Осень";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            lis.Send(bufOtp);
                            Console.WriteLine("Отправлен ответ!");
                            break;
                        }
                    case "Ноябрь":
                        {
                            string msg = "Лето";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            lis.Send(bufOtp);
                            Console.WriteLine("Отправлен ответ!");
                            break;
                        }
                    case "Декабрь":
                        {
                            string msg = "Зима";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            lis.Send(bufOtp);
                            Console.WriteLine("Отправлен ответ!");
                            break;
                        }
                    default:
                        {
                            string msg = "Ошибка";
                            byte[] bufOtp = Encoding.UTF8.GetBytes(msg);
                            lis.Send(bufOtp);
                            Console.WriteLine("Отправлен ответ!");
                            break;
                        }
 
                }
                s.Close();
 
            }
           
        }
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2019, 22:11
Ответы с готовыми решениями:

Передача данных в клиент-серверном приложении
Добрый день. Я новичок в C# и возможно мой вопрос будет глупым, но сильно не ругайте, а...

Шифрование данных в клиент-серверном приложении
Всем привет :) Возникла острая необходимость шифрования текста. В чем соль. Результат шифровки...

Зависание в клиент-серверном приложении при чтении
Привет всем, с наступающим! Подскажите пожалуйста, есть ли аналоги функции: ...

Аутентификация в клиент-серверном приложении
Доброго времени суток, граждане. Делаю клиент-серверное приложение с толстым клиентом....

2
11 / 11 / 8
Регистрация: 18.09.2012
Сообщений: 514
05.02.2019, 22:14  [ТС] 2
Вот исходники
Вложения
Тип файла: rar Индивидуальное.rar (322.8 Кб, 0 просмотров)
0
1144 / 853 / 262
Регистрация: 30.04.2009
Сообщений: 3,581
08.02.2019, 11:34 3
Строка data создается на основании всего буфера, поэтому содержит лишние нули в конце.
Нужно создавать строку на основании только принятых данных. Количнство принятых данных возвращается в методе socket Receive
1
08.02.2019, 11:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.02.2019, 11:34
Помогаю со студенческими работами здесь

Не передается файл в клиент-серверном приложении
Привет всем! Написал простой клиент -сервер, но возникла проблема. Клиент видет с сервер....

Обработка изображения в клиент-серверном приложении
Приветствую! Ребят, подскажите, почему в клиент-серверном приложении не удается отобразить картинку...

Передача файлов в клиент-серверном приложении
помогите плиииз.

Обработка ошибки в Клиент - Серверном приложении
Доброго времени суток. Писал чат на сокетах. Есть приложение Сервер и приложение Клиент. Клиент...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru