Commit bdd6f0a1 authored by Gabriele Civitarese's avatar Gabriele Civitarese

adding examples

parent b5ce98fb
# socket-multithread-java-examples
Code snippets for socket-based and multi-threaded Java programs.
\ No newline at end of file
import java.io.*;
import java.net.*;
class TCPMultiServer {
public static void main(String argv[]) throws Exception
{
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
/* Creazione di un thread e passaggio della established socket */
TCPServerThread theThread =
new TCPServerThread(connectionSocket);
/* Avvio del thread */
theThread.start();
}
}
}
\ No newline at end of file
import java.io.*;
import java.net.*;
public class TCPServerThread extends Thread {
private Socket connectionSocket = null;
private BufferedReader inFromClient;
private DataOutputStream outToClient;
/* L'argomento del costruttore e' una established socket */
public TCPServerThread(Socket s) {
connectionSocket = s;
try{
inFromClient =
new BufferedReader(
new InputStreamReader(connectionSocket.getInputStream()));
outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
String clientSentence;
String capitalizedSentence;
try {
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
connectionSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String argv[]) throws Exception {
String sentence;
String modifiedSentence;
/* Inizializza l'input stream (da tastiera) */
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
/* Inizializza una socket client, connessa al server */
Socket clientSocket = new Socket("localhost", 6789);
/* Inizializza lo stream di output verso la socket */
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
/* Inizializza lo stream di input dalla socket */
BufferedReader inFromServer =
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
/* Legge una linea da tastiera */
sentence = inFromUser.readLine();
/* Invia la linea al server */
outToServer.writeBytes(sentence + '\n');
/* Legge la risposta inviata dal server (linea terminata da \n) */
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
}
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String argv[]) throws Exception
{
String clientSentence;
String capitalizedSentence;
/* Crea una "listening socket" sulla porta specificata */
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true) {
/*
* Viene chiamata accept (bloccante).
* All'arrivo di una nuova connessione crea una nuova
* "established socket"
*/
Socket connectionSocket = welcomeSocket.accept();
/* Inizializza lo stream di input dalla socket */
BufferedReader inFromClient =
new BufferedReader(new
InputStreamReader(connectionSocket.getInputStream()));
/* Inizializza lo stream di output verso la socket */
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
/* Legge una linea (terminata da \n) dal client */
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
/* Invia la risposta al client */
outToClient.writeBytes(capitalizedSentence);
}
}
}
import java.io.*;
import java.net.*;
class UDPClient {
public static void main(String args[]) throws Exception {
/* Inizializza l'input stream (da tastiera) */
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
/* Crea una datagram socket */
DatagramSocket clientSocket = new DatagramSocket();
/* Ottiene l'indirizzo IP dell'hostname specificato
* (contattando eventualmente il DNS) */
InetAddress IPAddress = InetAddress.getByName("localhost");
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
String sentence = inFromUser.readLine();
sendData = sentence.getBytes();
/* Prepara il pacchetto da spedire specificando
* contenuto, indirizzo e porta del server */
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length,
IPAddress, 9876);
/* Invia il pacchetto attraverso la socket */
clientSocket.send(sendPacket);
/* Prepara la struttura dati usata per contenere il pacchetto in ricezione */
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
/* Riceve il pacchetto dal server */
clientSocket.receive(receivePacket);
String modifiedSentence = new String(receivePacket.getData());
System.out.println("FROM SERVER:" + modifiedSentence);
clientSocket.close();
}
}
import java.io.*;
import java.net.*;
class UDPServer {
public static void main(String args[]) throws Exception {
/* Inizializza la datagram socket specificando la porta di ascolto */
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true)
{
/* Prepara la struttura dati usata per contenere il pacchetto in ricezione */
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
/* Riceve un pacchetto da un client */
serverSocket.receive(receivePacket);
String sentence = new String(receivePacket.getData());
/* Ottiene dal pacchetto informazioni sul mittente */
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
/* Prepara il pacchetto da spedire specificando
* contenuto, indirizzo e porta del destinatario */
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress,
port);
/* Invia il pacchetto attraverso la socket */
serverSocket.send(sendPacket);
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment