Skip to content

Commit c031771

Browse files
committed
Added SimpleMessenger folder in the SocketClasses section of a small course on Java EE
1 parent ee7a80c commit c031771

File tree

2 files changed

+101
-0
lines changed

2 files changed

+101
-0
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package TCP_Sockets.SimpleMessenger;
2+
/*
3+
В цепочке:
4+
'открыть соединение -
5+
отправить запрос -
6+
получить ответ -
7+
закрыть соединение'
8+
мы можем не закрывать соединение, а
9+
обмениваться сообщениями с сервером
10+
'бесконечно долго'.
11+
12+
TCP - протокол это позволяет.
13+
*/
14+
import java.io.DataInputStream;
15+
import java.io.DataOutputStream;
16+
import java.io.IOException;
17+
import java.net.Inet4Address;
18+
import java.net.InetAddress;
19+
import java.net.Socket;
20+
import java.util.Scanner;
21+
22+
public class ClientMessager {
23+
public static void main(String[] args) throws IOException {
24+
25+
InetAddress inetAddress = Inet4Address.getByName("localhost");
26+
27+
try(Socket firstSocket = new Socket(inetAddress,6666);
28+
DataOutputStream clientOutputStream = new DataOutputStream(firstSocket.getOutputStream());
29+
DataInputStream clientInputStream = new DataInputStream(firstSocket.getInputStream());
30+
Scanner clientScanner = new Scanner(System.in)){
31+
32+
System.out.println("Send message to Server: ");
33+
/*
34+
Условно бесконечный цикл, в котором мы считываем
35+
сообщения с консоли и отправляем их на сервер. А
36+
так-же получаем сообщения от сервера и выводи их
37+
на экран.
38+
39+
!!!
40+
Нужно помнить, что TCP (в отличие от UDP) соединение
41+
проверяет наличие соединения с сервером и в данном
42+
примере, мы никак не обрабатываем разрыв соединения с
43+
сервером. Поэтому, когда клиент отправит серверу
44+
сообщение 'stop' - сервер выйдет из цикла, грубо
45+
разорвет соединение и окончит работу. А клиентская
46+
программа поймает исключение.
47+
!!!
48+
*/
49+
while(clientScanner.hasNextLine()){
50+
String requestFromClient = clientScanner.nextLine();
51+
clientOutputStream.writeUTF(requestFromClient);
52+
System.out.println("Response from Server: " + clientInputStream.readUTF());
53+
}
54+
}
55+
}
56+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package TCP_Sockets.SimpleMessenger;
2+
/*
3+
В цепочке:
4+
'открыть соединение -
5+
отправить запрос -
6+
получить ответ -
7+
закрыть соединение'
8+
мы можем не закрывать соединение, а
9+
обмениваться сообщениями с сервером
10+
'бесконечно долго'.
11+
12+
TCP - протокол это позволяет.
13+
*/
14+
import java.io.DataInputStream;
15+
import java.io.DataOutputStream;
16+
import java.io.IOException;
17+
import java.net.ServerSocket;
18+
import java.net.Socket;
19+
import java.util.Scanner;
20+
21+
public class ServerMessager {
22+
public static void main(String[] args) throws IOException {
23+
24+
System.out.println("Server is waiting for a messages ... ");
25+
26+
try(ServerSocket myServerSocket = new ServerSocket(6666);
27+
Socket myOuterConnectionSocket = myServerSocket.accept();
28+
DataOutputStream serverOutputStream =
29+
new DataOutputStream(myOuterConnectionSocket.getOutputStream());
30+
DataInputStream serverInputStream =
31+
new DataInputStream(myOuterConnectionSocket.getInputStream());
32+
Scanner serverScanner = new Scanner(System.in)){
33+
34+
String requestForSocketClient = serverInputStream.readUTF();
35+
36+
while(!"stop".equals(requestForSocketClient)){
37+
System.out.println("Client request: " + requestForSocketClient);
38+
System.out.println("Send message to Client: ");
39+
String responseFromServer = serverScanner.nextLine();
40+
serverOutputStream.writeUTF(responseFromServer);
41+
requestForSocketClient = serverInputStream.readUTF();
42+
}
43+
}
44+
}
45+
}

0 commit comments

Comments
 (0)