Форум программистов, компьютерный форум, киберфорум
Java: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
0 / 0 / 2
Регистрация: 04.04.2015
Сообщений: 7

UDP Клиент-Сервер

19.03.2016, 21:55. Показов 4774. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Написала два приложения: клиент и сервер. Обработала, чтобы клиент мог отправлять данные несколько раз. Вопрос: как написать выход, если будут посылаться буквенные символы? Подскажите, пожалуйста!)

Клиент:
Java
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
import java.io.IOException;
import java.net.*;
import java.util.Scanner;
public class Client {
public static void main(String[] args) throws IOException {
//DatagramSocket st=new DatagramSocket(12346);
//DatagramPacket dp = null;
//InetAddress loc=InetAddress.getByName("localhost");
boolean flag=true;
while (flag) {
    try{
        DatagramSocket st=new DatagramSocket(12346);
DatagramPacket dp = null;
InetAddress loc=InetAddress.getByName("localhost");
byte [] buf=new byte[100];
Scanner in = new Scanner(System.in);
int arr[] = new int [3];
for (int i = 0; i < arr.length; i++)
{
System.out.print("Введите элемент arr["+ i +"]:");
int k=System.in.read(buf);
dp=new DatagramPacket(buf, k, loc,12345 );
st.send(dp);
}
dp=new DatagramPacket(buf,100);
st.receive(dp);
System.out.println("the answer is "+new String(dp.getData()));
 
st.close();
}
      catch(Exception e)
      {
        System.out.println(e.getMessage());
        break;
      }
            
}
}
}
Cервер:
Java
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
import java.io.IOException;
import java.net.*;
public  class Servermain 
{
public static void main(String[] args) throws IOException, InterruptedException {
        new Servermain();
    }
    double sum1=0,sum2=0;
    DatagramSocket st;
    byte [] buf=new byte[100];
    DatagramPacket dp=new DatagramPacket(buf,100);
    
    Servermain()throws IOException, InterruptedException{
        st=new DatagramSocket(12345);
        listen();
    }
    
    private void listen() throws IOException, InterruptedException
    {
            boolean flag=true;
            while (true) {
                try{
        int a,b,c;
        st.receive(dp);
        String str=new String(dp.getData()); 
        str=str.substring(0, str.indexOf('\n'));
        System.out.println("number "+str+" recieved as a");
        a=Integer.parseInt(str);
        st.receive(dp);
        str=new String(dp.getData());
        str=str.substring(0, str.indexOf('\n'));
        System.out.println("number "+str+" recieved as b");
        b=Integer.parseInt(str);
        st.receive(dp);
        str=new String(dp.getData());
        str=str.substring(0, str.indexOf('\n'));
        System.out.println("number "+str+" recieved as c");
        c=Integer.parseInt(str);                     
    Thread t1=new Thread(new Runnable()
        {
            public void run()
            {
                                for(int i=a;i<b;i++)
                {
                    sum1+=3*i/(2*i+1);
                }
            }
        })
        ,t2=new Thread(new Runnable()
        {
            public void run()
            {
                for(int i=b;i<c;i++)
                {
                    sum1+=i*i+4*i+1;
                }
            }
        });
               
                t1.start();
        t2.start();
        t1.join();
        t2.join();
    //  sendBack();
                
                String stri=String.valueOf(sum1+sum2);
        byte [] send=stri.getBytes();
        dp=new DatagramPacket(send, send.length, InetAddress.getByName("localhost"),12346 );
        st.send(dp);
        sum1=0;
                sum2=0;
                }
                catch(Exception e)
      {
        System.out.println(e.getMessage());
        break;
      }
                
           }st.close();
        }
        
//  private void sendBack() throws IOException
//  {
//      String str=String.valueOf(sum1+sum2);
//      byte [] send=str.getBytes();
//      dp=new DatagramPacket(send, send.length, InetAddress.getByName("localhost"),12346 );
//      st.send(dp);
//      
//  }
 
}
Благодарю заранее, кто подскажет)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.03.2016, 21:55
Ответы с готовыми решениями:

UDP Клиент-Сервер
На этот раз мне надо реализовать клиент-серверное приложение использую UDP. В интернете прочитал, простой Эхо сервер сделал. А вот дальше...

UDP клиент
Имеется промышленная материнская плата, в которой реализована прошивка для UDP сервера, пишу клиент для соединения, при попытке соединиться...

Разработка клиент-серверных приложений с использованием UDP соединений
Добрый день, подскажите пожалуйста куда в Java правильно запихнуть код. Заранее спасибо . СЕРВЕР: import java.oi.*; import...

2
0 / 0 / 2
Регистрация: 04.04.2015
Сообщений: 7
27.03.2016, 14:00  [ТС]
Попробовала изменить сервер следующим образом:


#define _WINSOCK_DEPRECATED_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#include <iostream> // потоки ввода-вывода
#include <winsock2.h> // работа с сокетами
using namespace std;
#pragma comment(lib, "Ws2_32.lib")

bool is_vowel(char ch) // проверка, является ли символ гласным
{
int i, l;
char vowels[] = "AаЕеЁёИиОоУуЫыЭэЮюЯя"; // массив гласных
l = strlen(vowels);
for (i = 0; i < l; i++) // перебор массива
{ if (ch == vowels[i]) break; } // проверка символа
return (i != l);
}

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
SOCKET s;
sockaddr_in addr;
int err, size;
char b1[8], b2[100];
b2[0]='\0'; b2[1]='\0'; b2[2]='\0';
b2[3]='\0'; b2[4]='\0'; b2[5]='\0';
b2[6]='\0'; b2[7]='\0'; b2[8]='\0';
int i, k, n, v1, v2, s1, s2;
int j=0;
wVersionRequested = MAKEWORD(2, 2); // максимальный номер версии
err = WSAStartup(wVersionRequested, &wsaData); // инициализация WinSock DLL
if (err != 0) return; // если ошибка - завершение работы
addr.sin_family = AF_INET; // тип адреса
addr.sin_port = htons(1024); // номер порта
addr.sin_addr.s_addr = inet_addr("127.0.0.1"); // IP-адрес сервера
s = socket(AF_INET, SOCK_DGRAM, 0); // создание сокета потока, протокол UDP
bind(s, (sockaddr*) &addr, sizeof(addr)); // связывание сокета с локальным адресом
//while (true) // вечный цикл обработки
//{
size = sizeof(addr);

recvfrom(s, b1, sizeof(b1), 0, (sockaddr*) &addr, &size); // приём строки
for (int m=0; m<sizeof(b1)-1; m++) {
b2[j]=b1[m];
j++;
b2[j]='\0';
}

n = strlen(b1); // длина принятой строки
for (v1 = 0; v1 < n; v1++)
{ if (is_vowel(b1[v1])) break; } // ищем первую гласную
if (v1 == n) strcpy(b2, b1); // нет гласных - копируем слово целиком
else // есть гласные - разбиваем на слоги
{
k = s1 = s2 = 0;
while (s1 < n) // пока не достигнут конец слова
{
for (v2 = (v1 + 1); v2 < n; v2++)
{ if (is_vowel(b1[v2])) break; } // ищем следующую гласную
if (v2 == n) s2 = n; // не осталось гласных - последний слог
else
{
if ((v2 - v1) > 2) s2 = v1 + 1; // 2 согласных, закрытый слог
else s2 = v1; // открытый слог
}
for (i = s1; i <= s2; i++) b2[k++] = b1[i]; // копируем текущий слог
if (s2 != n) b2[k++] = '-'; // если не конец слова - добавляем дефис
s1 = s2 + 1; v1 = v2; // переход к следующему слогу
}
}
sendto(s, b2, sizeof(b2), 0, (sockaddr*) &addr, size); // отправка ответа
//}
closesocket(s); // закрытие сокета
WSACleanup(); // прекращение работы с WinSock DLL
}


Выводит после 8 элементов странные знаки. Почему? Что не так в коде?
Миниатюры
UDP Клиент-Сервер  
0
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
01.04.2016, 08:36
В первом сообщении у вас сервер вроде-как на Java, во втором - уже на C++ если не ошибаюсь. Это прикол такой ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.04.2016, 08:36
Помогаю со студенческими работами здесь

UDP Клиент Сервер
Есть простой UDP клиент и UDP эхо-сервер. Вот исходники: Сервер: #include &quot;stdafx.h&quot; #pragma comment ( lib,...

UDP клиент сервер
Помогите пожалуйста сделать &quot;Получение по запросу имени компьютера, физического адреса, IP-адреса.&quot; Есть такое, но оно выводит в...

Простой клиент-сервер UDP
Всем добрый вечер! Для осознания, почему контроллер не связывается с компьютером, решил отработать клиент-серверное взаимодействие по...

Клиент-Сервер на UDP. Работающий
Всем привет, я в C# недавно. Есть готовый клиент сервер на ЮДП. Отправляет только одно сообщение и на этом все. Мне надо что-бы и...

UDP клиент-сервер. Пакет
Доброго времени, ребят! Возникла проблема. В универе дали задание в довольно ИНФОРМАТИВНОМ виде... Цитирую: &quot;- пакет - от 1...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru