Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
metrolog
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101
1

Двухсторонний обмен сообщениями через соккет

01.04.2013, 20:27. Просмотров 935. Ответов 3
Метки нет (Все метки)

есть клиент и сервер.
организовать одностороннюю отправку сообщений получается.
А как организовать отправку сообщений в две стороны? то есть и сервер может отправлять сообщения и клиент может писать на сервер.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2013, 20:27
Ответы с готовыми решениями:

Быстрый обмен сообщениями
Собственно пишу сервер, под mmorpg. Понятное дело что обмен данными должен происходить быстро. И...

Обмен сообщениями через протокол Tcp
Приветствую, форумчане! Христос Воскресе!:) Собственно, задание: Напишите программу, которая при...

Обмен файлами и сообщениями через интернет
Мне надо сделать программу, которая будет обмениваться сообщениями с такой-же программой на другом...

Взаимодействие процессов, обмен сообщениями через порт
Народ, нужна помощь с лабораторной работой. Нужна вот такая программа на С++: "Вычислить f (x) *...

Разработка ПО для PIC 16F877, обеспечивающего двухсторонний обмен данными по интерфейсу RS232
на приеме байта зацикливается на двух строках btfss PIR1, RCIF ; ожидание окончания приема...

3
Skipy
1996 / 1419 / 91
Регистрация: 25.11.2010
Сообщений: 3,611
02.04.2013, 11:09 2
Держать соединение открытым - вариант push. Или класть сообщение в очередь, а клиент будет периодически опрашивать эту очередь и читать сообщения - вариант pull.
1
Serhiy97
0 / 0 / 0
Регистрация: 16.03.2015
Сообщений: 1
14.11.2015, 01:52 3
Server.java
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
import java.net.*;
import java.io.*;
public class Server {
    public static void main(String[] ar)    {
        int port = 6666; // случайный порт (может быть любое число от 1025 до 65535)
        try {
            ServerSocket ss = new ServerSocket(port); // создаем сокет сервера и привязываем его к вышеуказанному порту
            System.out.println("Очікування підключення клієнта");
 
            Socket socket = ss.accept(); // заставляем сервер ждать подключений и выводим сообщение когда кто-то связался с сервером
            System.out.println("Клієнт підключився до нашого серверу. Тепер з ним можна обмінюватись повідомленнями");
            System.out.println();
 
            // Берем входной и выходной потоки сокета, теперь можем получать и отсылать данные клиенту.
            InputStream sin = socket.getInputStream();
            OutputStream sout = socket.getOutputStream();
 
            // Конвертируем потоки в другой тип, чтоб легче обрабатывать текстовые сообщения.
            DataInputStream in = new DataInputStream(sin);
            DataOutputStream out = new DataOutputStream(sout);
 
            String line = null;
            while(true) {
                line = in.readUTF(); // ожидаем пока клиент пришлет строку текста.
                System.out.println("Клієнт написав : " + line);
                System.out.println("Я посилаю його назад ... ");
                out.writeUTF(line); // отсылаем клиенту обратно ту самую строку текста.
                out.flush(); // заставляем поток закончить передачу данных.
                System.out.println("Очікуємо на наступний рядок ...");
                System.out.println();
            }
        } catch(Exception x) { x.printStackTrace(); }
    }
}
Client.java
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
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
 
public class Client {
    public static void main(String[] ar) {
        int serverPort = 6666; // здесь обязательно нужно указать порт к которому привязывается сервер.
        String address = "127.0.0.1"; // это IP-адрес компьютера, где исполняется наша серверная программа.
        // Здесь указан адрес того самого компьютера где будет исполняться и клиент.
 
        try {
            InetAddress ipAddress = InetAddress.getByName(address); // создаем объект который отображает вышеописанный IP-адрес.
            System.out.println("Ви під'єднались до ІР-адрессу : " + address + " та порту серверу : " + serverPort);
            Socket socket = new Socket(ipAddress, serverPort); // создаем сокет используя IP-адрес и порт сервера.
            //System.out.println("Yes! I just got hold of the program.");
 
            // Берем входной и выходной потоки сокета, теперь можем получать и отсылать данные клиентом.
            InputStream sin = socket.getInputStream();
            OutputStream sout = socket.getOutputStream();
 
            // Конвертируем потоки в другой тип, чтоб легче обрабатывать текстовые сообщения.
            DataInputStream in = new DataInputStream(sin);
            DataOutputStream out = new DataOutputStream(sout);
 
            // Создаем поток для чтения с клавиатуры.
            BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
            String line = null;
            System.out.println("Введіть своє повідомлення і натисніть клавішу Enter, для того щоб ваше повідомлення" +
                    "надіслано на сервер і сервер Вам відповів");
            System.out.println();
 
            while (true) {
                line = keyboard.readLine(); // ждем пока пользователь введет что-то и нажмет кнопку Enter.
                System.out.println("Відправка цього рядка на сервер ... ");
                out.writeUTF(line); // отсылаем введенную строку текста серверу.
                out.flush(); // заставляем поток закончить передачу данных.
                line = in.readUTF(); // ждем пока сервер отошлет строку текста.
                System.out.println("Сервер прочитав Ваше повідомлення і відправив Вам це: " + line);
                //System.out.println("Looks like the server is pleased with us. Go ahead and enter more lines.");
                System.out.println();
            }
        }
        catch (Exception x) {
            x.printStackTrace();
        }
    }
}
0
turbanoff
Эксперт Java
4029 / 3764 / 743
Регистрация: 18.05.2010
Сообщений: 9,330
Записей в блоге: 11
Завершенные тесты: 1
16.11.2015, 14:03 4
Serhiy97, Что это?
0
16.11.2015, 14:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2015, 14:03

Обмен сообщениями
Две стороны (Alice и Bob) обмениваются сообщениями. Каждое сообщение состоит из данных об...

Обмен сообщениями
Как отправить сообщение через свой сайт в браузер тому кто на сайте (без запроса)? И вообще...

Обмен сообщениями
Посоветуйте программу или онлайн-сервис для обмена сообщениями. Необходимо, чтобы его можно было...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru