Felhasználói eszközök

Eszközök a webhelyen


tanszek:oktatas:tcp_socket_connection

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

Előző változat mindkét oldalon Előző változat
Következő változat
Előző változat
tanszek:oktatas:tcp_socket_connection [2023/02/26 15:41]
knehez [Exercise]
tanszek:oktatas:tcp_socket_connection [2023/02/27 09:16] (aktuális)
knehez [Exercise 1.]
Sor 1: Sor 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:
Sor 7: Sor 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.
  
Sor 26: Sor 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 ====
  
  
Sor 34: Sor 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;​
Sor 56: Sor 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 {
Sor 78: Sor 81:
     ioException.printStackTrace();​     ioException.printStackTrace();​
     } finally {     } finally {
-    // 4: kapcsolat lezárása+    // 4: close connection
     try {     try {
     in.close();​     in.close();​
Sor 107: Sor 110:
     }     }
 </​code>​ </​code>​
-=== Socket ​kliens kód ===+=== Socket ​client source ​===
 <code java> <code java>
     import java.io.IOException;​     import java.io.IOException;​
Sor 126: Sor 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();​
Sor 146: Sor 149:
     ioException.printStackTrace();​     ioException.printStackTrace();​
     } finally {     } finally {
-    // 4: Kapcsolat zárása+    // 4: close connection
     try {     try {
     in.close();​     in.close();​
Sor 173: Sor 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>
Sor 214: Sor 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();​
  }  }
Sor 220: Sor 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>
Sor 239: Sor 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 · Utolsó módosítás: 2023/02/26 15:41 szerkesztette: knehez