Skip to content

Commit 1442a50

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

File tree

3 files changed

+118
-0
lines changed

3 files changed

+118
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package TCP_Sockets.SocketClient;
2+
3+
import java.io.*;
4+
import java.net.Socket;
5+
6+
public class SimpleSocketClient {
7+
public static void main(String[] args) throws IOException {
8+
/*
9+
1. Создаем клиентский Socket (гнездо, розетка), через
10+
который будет послан запрос к серверу, в нашем случае
11+
к серверу Google. Через TCP протокол на порт 80
12+
(http - 80, https - 443).
13+
14+
2. Открытое соединение и поток всегда нужно закрывать
15+
по завершении программы, поэтому в данном примере мы
16+
помещаем всю последовательность
17+
'соединения-запроса данных-получения ответа' в блок
18+
try-with-resources,
19+
*/
20+
try(Socket firstSocket = new Socket("google.com",80);
21+
DataOutputStream outputStream = new DataOutputStream(firstSocket.getOutputStream());
22+
DataInputStream inputStream = new DataInputStream(firstSocket.getInputStream())){
23+
/* Посылаем запрос к серверу */
24+
outputStream.writeUTF("Hello Google!");
25+
/* Получаем ответ от сервера */
26+
byte[] responseFromGoogle = inputStream.readAllBytes();
27+
28+
System.out.println(responseFromGoogle.length);
29+
}
30+
}
31+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package TCP_Sockets.SocketClient;
2+
3+
import java.io.DataInputStream;
4+
import java.io.DataOutputStream;
5+
import java.io.IOException;
6+
import java.net.Inet4Address;
7+
import java.net.InetAddress;
8+
import java.net.Socket;
9+
10+
public class SimpleSocketClient_IA {
11+
public static void main(String[] args) throws IOException {
12+
/*
13+
1. Создаем клиентский Socket (гнездо, розетка), через
14+
который будет послан запрос к серверу, в нашем случае
15+
к серверу Google. Через TCP протокол обращение идет
16+
на порт 80 (http - 80, https - 443).
17+
18+
2. Открытое соединение и поток всегда нужно закрывать
19+
по завершении программы, поэтому в данном примере мы
20+
помещаем всю последовательность
21+
'соединения-запроса данных-получения ответа' в блок
22+
try-with-resources,
23+
24+
3. Используем класс Inet4Address
25+
*/
26+
InetAddress inetAddress = Inet4Address.getByName("Google.com");
27+
28+
try(Socket firstSocket = new Socket(inetAddress,80);
29+
DataOutputStream outputStream = new DataOutputStream(firstSocket.getOutputStream());
30+
DataInputStream inputStream = new DataInputStream(firstSocket.getInputStream())){
31+
32+
/* Посылаем запрос к серверу */
33+
outputStream.writeUTF("Hello Google!");
34+
/* Получаем ответ от сервера */
35+
byte[] responseFromGoogle = inputStream.readAllBytes();
36+
37+
System.out.println(responseFromGoogle.length);
38+
}
39+
}
40+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package TCP_Sockets.SocketClient;
2+
3+
import java.io.DataInputStream;
4+
import java.io.DataOutputStream;
5+
import java.io.IOException;
6+
import java.net.Inet4Address;
7+
import java.net.InetAddress;
8+
import java.net.Socket;
9+
10+
public class SimpleSocketRunner {
11+
public static void main(String[] args) throws IOException {
12+
/*
13+
Теперь наш клиент отправит сообщение нашему серверу,
14+
т.к. он находится на той-же самой машине, то мы
15+
обращаемся к "локалхосту", а порт указываем, то на
16+
котором слушает наш (SocketServerRunner) сервер - 7777
17+
*/
18+
InetAddress inetAddress = Inet4Address.getByName("localhost");
19+
20+
try(Socket firstSocket = new Socket(inetAddress,7777);
21+
DataOutputStream outputStream = new DataOutputStream(firstSocket.getOutputStream());
22+
DataInputStream inputStream = new DataInputStream(firstSocket.getInputStream())){
23+
24+
/* Посылаем запрос к серверу */
25+
outputStream.writeUTF("Hello my first SERVER!!!");
26+
/* Получаем ответ от сервера, мы точно знаем, что это строка и мы ее ждем */
27+
System.out.println("Response from SERVER: " + inputStream.readUTF());
28+
}
29+
/*
30+
Для проверки работоспособности нашего клиент-серверного
31+
соединения, мы первым запускаем наш сервер, который ожидает
32+
внешнего запроса.
33+
34+
Далее, мы запускаем наш клиент, который шлет нашему серверу
35+
сообщение: Hello my first SERVER!!!
36+
37+
Сервер в свою очередь получив сообщение из вне отправляет
38+
ответ: Hello from server!!!
39+
40+
Таким образом работает протокол HTTP:
41+
1. Open Connection
42+
2. Send Request
43+
3. Receive Response
44+
4. Close Connection
45+
*/
46+
}
47+
}

0 commit comments

Comments
 (0)