tanszek:oktatas:tcp_socket_connection

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tanszek:oktatas:tcp_socket_connection [2023/02/26 15:41] – [Exercise] kneheztanszek:oktatas:tcp_socket_connection [2023/02/27 09:16] (current) – [Exercise 1.] knehez
Line 1: Line 1:
-====== Exercise ======+====== Socket client and server exercises ====== 
 + 
 +==== Exercise 1. ====
  
 Create a simplified FTP (file transport) client and server where the client can send or download text files from the server: Create a simplified FTP (file transport) client and server where the client can send or download text files from the server:
Line 7: Line 9:
   -) Server sends back the list of the downloadable files   -) 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? ('u' or 'd'   -) Client lists the files and asks the user what action they want to take? Upload or download? ('u' or 'd'
-  -) In both cases the uses must give the full file name with extension+  -) 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.   -) The client sends the selected file to the server (upload) or downloads the selected file from the server to a specific directory.
  
Line 26: Line 28:
   -) If you press "u", /files/ is sent to the server   -) If you press "u", /files/ is sent to the server
  
-====== Alappéldák ======+==== TCP style ====
  
  
Line 34: Line 36:
  
  
-==== 1.) Hagyományos blokkolt TCP alapú socket szerver ==== 
  
-=== Socket szerver kód ===+==== 1.) Traditional blocked TCP based socket server class in Java ==== 
 + 
 +=== Socket server source code ===
 <code java> <code java>
     import java.io.IOException;     import java.io.IOException;
Line 56: Line 59:
     void run() {     void run() {
     try {     try {
-    // 1. szerver socket létrehozása+    // 1. create a socket server listening to port 8080
     providerSocket = new ServerSocket(8080, 10);     providerSocket = new ServerSocket(8080, 10);
-    // 2. kapcsolódásra várakozás+    // 2. waiting for the connection (here we are waiting until next connection)
     connection = providerSocket.accept();     connection = providerSocket.accept();
-    // 3. Input és Output streamek megadása+    // 3. create Input and Output streams
     out = new ObjectOutputStream(connection.getOutputStream());     out = new ObjectOutputStream(connection.getOutputStream());
     in = new ObjectInputStream(connection.getInputStream());     in = new ObjectInputStream(connection.getInputStream());
-    // 4. socket kommunikáció+    // 4. socket communication
     do {     do {
     try {     try {
Line 78: Line 81:
     ioException.printStackTrace();     ioException.printStackTrace();
     } finally {     } finally {
-    // 4: kapcsolat lezárása+    // 4: close connection
     try {     try {
     in.close();     in.close();
Line 107: Line 110:
     }     }
 </code> </code>
-=== Socket kliens kód ===+=== Socket client source ===
 <code java> <code java>
     import java.io.IOException;     import java.io.IOException;
Line 126: Line 129:
     void run() {     void run() {
     try {     try {
-    // 1. socket kapcsolat létrehozása+    // 1. try to connect to the socket: localhost:8080
     requestSocket = new Socket("localhost", 8080);     requestSocket = new Socket("localhost", 8080);
-    // 2. Input and Output streamek+    // 2. Input and Output streams
     out = new ObjectOutputStream(requestSocket.getOutputStream());     out = new ObjectOutputStream(requestSocket.getOutputStream());
     in = new ObjectInputStream(requestSocket.getInputStream());     in = new ObjectInputStream(requestSocket.getInputStream());
-    // 3: Kommunikáció+    // 3: communications
     do {     do {
     try {     try {
-    sendMessage("Hello szerver");+    sendMessage("Hello server");
     sendMessage("bye");     sendMessage("bye");
     message = (String) in.readObject();     message = (String) in.readObject();
Line 146: Line 149:
     ioException.printStackTrace();     ioException.printStackTrace();
     } finally {     } finally {
-    // 4: Kapcsolat zárása+    // 4: close connection
     try {     try {
     in.close();     in.close();
Line 173: Line 176:
     }     }
 </code> </code>
 +==== Traditional UDP style ====
  
 +The following Agent sends a message and waits for a response on port 8080, also with UDP. In the Eclipse IDE, the text you type on the console can be sent by pressing ctrl+z
  
- +== Exercise 2. ==  
- +Modify the code so that you can transfer burned-in name and existing text or image file larger than kbytes and verify that it was successfully sent.
- +
- +
- +
-==== 2.) Hagyományos UDP alapú kommunikáció ==== +
- +
-2.a) Az alábbi Ágens küld egy üzenetet és a 8080-as porton várja a választ rá, ugyancsak UDP-vel. Az eclipse fejlesztőkörnyezetben a consolon beírt szöveget ctrl+z leütésével lehet elküldeni. +
- +
-**Feladat**: módosítsuk a kódot, hogy át tudjon küldeni egy beégetett nevű, és létező, kbyte-nál nagyobb szöveges vagy kép állományt és ellenőrizzük a sikeres küldést.+
  
 <code java> <code java>
Line 214: Line 211:
  String modifiedSentence = new String(receivePacket.getData());  String modifiedSentence = new String(receivePacket.getData());
   
- System.out.println("átalakítva:" + modifiedSentence);+ System.out.println("converted:" + modifiedSentence);
  clientSocket.close();  clientSocket.close();
  }  }
Line 220: Line 217:
 </code> </code>
  
-2.b) Az UDP szerver a 8080-as porton várja az ágensek üzeneteit és nagybetűre konvertálva visszaküldi a kliens UDP socketre.+2.b) The UDP server waits for the agents messages on port 8080 and converts them to uppercase letters and sends them back to the client UDP socket.
  
 <code java> <code java>
Line 239: Line 236:
   
  DatagramPacket receivePacket = new DatagramPacket(bytesReceived, bytesReceived.length);  DatagramPacket receivePacket = new DatagramPacket(bytesReceived, bytesReceived.length);
- // itt várakozik ameddig adat jön a 8080-as porton+ // here we are waiting for the packets
  serverSocket.receive(receivePacket);  serverSocket.receive(receivePacket);
   
- String szoveg = new String(receivePacket.getData());+ String textMessage = new String(receivePacket.getData());
   
- System.out.println("kaptam: " + szoveg);+ System.out.println("I got: " + textMessage);
   
  InetAddress IPAddress = receivePacket.getAddress();  InetAddress IPAddress = receivePacket.getAddress();
  int port = receivePacket.getPort();  int port = receivePacket.getPort();
   
- String nagybetűsSzöveg szoveg.toUpperCase(); + String upperCaseText textMessage.toUpperCase(); 
- bytesSent = nagybetűsSzöveg.getBytes();+ bytesSent = upperCaseText.getBytes();
   
- // visszaküldi+ // send back
  DatagramPacket sendPacket = new DatagramPacket(bytesSent, bytesSent.length, IPAddress, port);  DatagramPacket sendPacket = new DatagramPacket(bytesSent, bytesSent.length, IPAddress, port);
  serverSocket.send(sendPacket);  serverSocket.send(sendPacket);
tanszek/oktatas/tcp_socket_connection.1677426060.txt.gz · Last modified: 2023/02/26 15:41 by knehez