tanszek:oktatas:iss_t:integration_based_on_tcp_ip_sockets
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
tanszek:oktatas:iss_t:integration_based_on_tcp_ip_sockets [2023/03/05 16:35] – létrehozva knehez | tanszek:oktatas:iss_t:integration_based_on_tcp_ip_sockets [2024/02/25 15:43] (current) – [Blocking and non-blocking TCP sockets in Java] knehez | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Socket communication ===== | + | ===== TCP - Socket communication ===== |
The client sends requests to the server over a TCP socket connection, and the server responds to these requests. Here are the basic steps involved in integrating software systems or components using TCP socket communication: | The client sends requests to the server over a TCP socket connection, and the server responds to these requests. Here are the basic steps involved in integrating software systems or components using TCP socket communication: | ||
Line 24: | Line 24: | ||
* Where the number of transactions per second up to ~ 50 transactions, | * Where the number of transactions per second up to ~ 50 transactions, | ||
+ | ==== Blocking and non-blocking TCP sockets in Java ==== | ||
+ | {{: | ||
- | [[Java example for Blocking and Non-Blocking Socket]] | + | Blocking and non-blocking TCP sockets differ mainly in handling input/ |
- | ** Exercise 1. ** | + | === Blocking sockets === |
- | Create a simplified FTP (file transport) client and **blocking** server where the client can send or download text files from the server: | + | **Execution Flow**: In the case of blocking sockets, when a socket operation (like recv or send) is called, the program' |
- | == General | + | **Ease of Use**: Blocking sockets are straightforward to use and understand because |
- | -) Client connects to the server | + | |
- | -) Server sends back the list of the downloadable files | + | |
- | -) Client lists the files and asks the user what action they want to take? Upload or download? (' | + | |
- | -) In both cases users must give the full file name with extension | + | |
- | -) The client sends the selected file to the server (upload) or downloads the selected file from the server to a specific directory. | + | |
+ | **Performance Considerations**: | ||
- | == Server viewpoint | + | === Non-Blocking sockets === |
- | -) After connecting, it reads the files from the /store subdirectory and sends the file names to the client after receiving the listing message. | + | |
- | -) We are waiting for the client' | + | |
- | -) We get a filename from the client and if the action is ' | + | |
- | -) If the operation is ' | + | |
- | == Client viewpoint == | + | **Execution Flow**: Non-blocking sockets, on the other hand, allow the program' |
- | | + | **Complexity**: |
- | -) We ask for the " | + | |
- | -) Then we'll ask for the file-name as well. | + | **Performance |
- | -) The client reads the files from the /files folder, or creates the downloaded file here | + | |
- | -) If you press " | + | Reading (Java implementations): |
- | -) If you press " | + | |
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | {{tanszek: | ||
+ | |||
+ | |||
+ | ==== Non-blocking loop ==== | ||
+ | <code java> | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | SocketChannel socketChannel = serverSocketChannel.accept(); | ||
+ | |||
+ | if(socketChannel != null){ | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | </ | ||
- | ** Exercise 2. ** | ||
- | Modify the **non-blocking** code so that you can transfer a burned-in name and existing text or image file larger than 2 kbytes and verify that it was successfully sent. | ||
tanszek/oktatas/iss_t/integration_based_on_tcp_ip_sockets.1678034101.txt.gz · Last modified: 2023/03/05 16:35 by knehez