Primo esercizio sui socket
This commit is contained in:
BIN
socket_test/.DS_Store
vendored
Normal file
BIN
socket_test/.DS_Store
vendored
Normal file
Binary file not shown.
41
socket_test/test/Record.java
Normal file
41
socket_test/test/Record.java
Normal 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;
|
||||||
|
}
|
||||||
45
socket_test/test/client.java
Normal file
45
socket_test/test/client.java
Normal 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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
44
socket_test/test/server.java
Normal file
44
socket_test/test/server.java
Normal 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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
56
socket_test/test/server_request_management.java
Normal file
56
socket_test/test/server_request_management.java
Normal 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;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user