Primo esercizio sui socket

This commit is contained in:
2014-10-21 13:51:19 +02:00
parent 63f94029df
commit 8db1dfaf28
6 changed files with 186 additions and 0 deletions

BIN
socket_test/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1,41 @@
package socket_test.test;
import java.io.Serializable;
/**
* Created with xgiovio.macbookair.
* User: xgiovio
* Date: 21/10/14
* Time: 13:20
*/
public class Record implements Serializable {
private static final long serialVersionUID = 9090L;
public Record (String in_nome, String in_cognome){
nome = in_nome;
cognome = in_cognome;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCognome() {
return cognome;
}
public void setCognome(String cognome) {
this.cognome = cognome;
}
private String nome;
private String cognome;
}

View File

@@ -0,0 +1,45 @@
package socket_test.test;
import com.sun.corba.se.pept.encoding.OutputObject;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Logger;
/**
* Created with xgiovio.macbookair.
* User: xgiovio
* Date: 21/10/14
* Time: 12:31
*/
public class client {
private static final Logger log = Logger.getLogger(client.class.getName());
public static void main (String[] arg){
try {
Socket sock = new Socket("localhost", 60000);
log.info("Connessione a localhost 60000");
ObjectOutputStream out = new ObjectOutputStream(sock.getOutputStream());
Record r = new Record("Mario", "Rossi");
log.info("inviando Mario Rossi al server");
out.writeObject(r);
} catch (IOException e) {
e.printStackTrace();
}
}
}

View File

@@ -0,0 +1,44 @@
package socket_test.test;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.logging.Logger;
/**
* Created with xgiovio.macbookair.
* User: xgiovio
* Date: 21/10/14
* Time: 12:31
*/
public class server {
private static final Logger log = Logger.getLogger(socket_test.test.server.class.getName());
public static void main (String[] arg){
try {
ServerSocket open = new ServerSocket(60000);
log.info("Aperto socket di ascolto su porta 60k");
final HashMap<String,Record> database = new HashMap<String, Record>();
for(;true;){
Socket accept = open.accept();
log.info("Accettata richiesta");
Thread request_management_thread = new Thread(new server_request_management(accept,database));
log.info("Richiesta inoltrata a thread");
request_management_thread.run();
log.info("Waiting on port 60k");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

View File

@@ -0,0 +1,56 @@
package socket_test.test;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.Socket;
import java.util.HashMap;
import java.util.logging.Logger;
/**
* Created with xgiovio.macbookair.
* User: xgiovio
* Date: 21/10/14
* Time: 13:00
*/
public class server_request_management implements Runnable{
private static final Logger log = Logger.getLogger(server_request_management.class.getName());
public server_request_management (Socket in, HashMap<String,Record> in_h){
sock = in;
hash = in_h;
}
@Override
public void run() {
log.info("Gestendo richiesta");
try {
ObjectInputStream in = new ObjectInputStream(sock.getInputStream());
Record r = (Record) in.readObject();
if (r.getNome()!= null && r.getCognome()!= null){
synchronized (hash) {
hash.put(r.getNome(), r);
}
log.info("Aggiungendo " + r.getNome() + " " + r.getCognome() + " al database");
}
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//operations on socket
log.info("Terminata gestione");
}
final private Socket sock;
final private HashMap<String,Record> hash;
}