/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Protocole;
import Securite.MyCertificate;
import java.io.DataInputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.security.KeyStore;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
public class NetworkServer {
private ServerSocket socketServeur;
private Socket socketClient;
RMP protocole;
boolean connected;
MyCertificate myCertificate;
public NetworkServer(int port, MyCertificate myCertificate){
this.myCertificate = myCertificate;
protocole = new RMP(myCertificate, 123, false);
try {
socketServeur = new ServerSocket(port);
connected = true;
System.out.println("Socket créer");
} catch (IOException ex) {
Logger.getLogger(NetworkServer.class.getName()).log(Level.SEVERE, null, ex);
connected = false;
}
}
public NetworkServer(Socket socket, MyCertificate myCertificate){
protocole = new RMP(myCertificate, 123, false);
this.socketClient = socket;
this.connected = true;
}
public boolean accept(){
try {
System.out.println("En attente d'un client");
this.setSocketClient(socketServeur.accept());
System.out.println("client connecté");
return true;
} catch (IOException ex) {
Logger.getLogger(NetworkServer.class.getName()).log(Level.SEVERE, null, ex);
return false;
}
}
public void disconnect(){
if(!socketServeur.isClosed()){
try {
socketServeur.close();
System.out.println("Déconnection réussie");
} catch (IOException ex) {
Logger.getLogger(NetworkServer.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public void disconnectClient(){
if(!socketClient.isClosed()){
try {
getSocketClient().close();
System.out.println("Déconnection client réussie");
} catch (IOException ex) {
Logger.getLogger(NetworkServer.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public boolean isConnected(){
return connected;
}
public void send(PacketCom packet){
if(this.isConnected()){
try {
OutputStream os = this.socketClient.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject((Object)packet);
} catch (IOException ex) {
Logger.getLogger(NetworkServer.class.getName()).log(Level.SEVERE, null, ex);
}
}else{
System.out.println("Socket non connectée");
}
}
public PacketCom receive() throws Exception{
InputStream is = null;
try{
is = this.socketClient.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
Object objet = (Object)ois.readObject();
PacketCom MessageToClient = protocole.messageFromClient(objet);
return MessageToClient;
}catch(Exception ex){
System.out.println("msg: " + ex.getMessage());
this.disconnectClient();
throw (Exception)ex;
}
}
public Socket getSocketClient() {
return socketClient;
}
public void setSocketClient(Socket socketClient) {
this.socketClient = socketClient;
}
}