Professional Documents
Culture Documents
Public Class Extends: Handle Thread (
Public Class Extends: Handle Thread (
Public Class Extends: Handle Thread (
int _port;
String _texto;
DatagramSocket _serverSocket;
InetAddress _IPAddress;
int _clientPort;
boolean _list = false;
boolean doGet=true;
private OutputStream dataOs;
private PrintWriter dataWriter;
private byte[] buff = new byte[1024];
public handle(boolean list, int port, String texto,
DatagramSocket serverSocket, InetAddress IPAddress, int clientPort) {
System.out.println("ENTRA HANDLE");
_texto = texto;
_list = list;
_port = port;
_serverSocket = serverSocket;
_IPAddress = IPAddress;
_clientPort = clientPort;
}
public
boolean
do_get(String name,Socket clientSock) {
File inFile = new File(name);
boolean ok = true;
if (inFile.exists()) {
BufferedInputStream fileStream;
BufferedOutputStream dataOut;
try {
fileStream = new BufferedInputStream (new
FileInputStream(inFile));
dataOut = new
BufferedOutputStream(clientSock.getOutputStream());
dataWriter.println(inFile.length());
int recv = 0;
while ((recv = fileStream.read(buff)) != -1) {
//
System.out.println("entrando donde debo" +recv);
dataOut.write(buff,0,recv);
}
dataOut.flush();
fileStream.close();
System.out.println("mandando archivo " + name + " de tamanio:
"+inFile.length());
ok=true;
} catch (IOException e) {
System.out.println("Error ENVIO archivo." + e);
}
} else {
System.out.println("El archivo " + inFile + " no existe.");
ok=false;
}
return ok;
}
public void do_list() {
Path currentPath = Paths.get(".");
File[] dirList = currentPath.toFile().listFiles();
for (File f : dirList) {
dataWriter.println(f.length());
dataWriter.println(f.getName());
}
dataWriter.println("-1");
dataWriter.println("$");
}
public void run() {
if ( _list) {
ServerSocket servsock = null;
try {
servsock = new ServerSocket(_port);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Esperando cliente TCP para datos...");
Socket sock = null;
try {
sock = servsock.accept();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Conexion aceptada en socket : " + sock);
// LIST
try {
dataOs = sock.getOutputStream();
dataWriter = new PrintWriter(dataOs,true);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
do_list();
try {
servsock.close();
sock.close();
System.out.println("Cierro conexion datos tcp");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else {
System.out.println("GET TCP...");
ServerSocket servsock = null;
try {
servsock = new ServerSocket(_port);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Esperando cliente TCP para datos...");
Socket sock = null;
try {
sock = servsock.accept();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Conexion aceptada: " + sock);
try {
dataOs = sock.getOutputStream();
dataWriter = new PrintWriter(dataOs,true);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
doGet=do_get(_texto,sock);
//Ciere sockets
try {
servsock.close();
sock.close();
String fichero;
fichero = textcommand.substring(4);
return fichero;
}
public static int portFromResponse(String textresponse) {
String puerto = textresponse.substring(5);
return Integer.parseInt(puerto);
}
public static void sendUDPresponse(DatagramSocket serverSocket, String response,
InetAddress IPAddress, int port)
throws IOException {
// Buffer de salida
byte[] sendData = response.getBytes();
// Crea paquete de env-o
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length,
IPAddress, port);
bos.write(buff,0,bytesRead);
bos.flush();
}
bos.close();
} catch (IOException e) {
System.out.println("Error en el
}
}
public static void main(String[] args) throws IOException {
if ((args.length < 1) || (args.length > 2)) {
throw new IllegalArgumentException("Introduzca Parmetros: <@IP>
<Puerto>");
}
// Direccin del servidor 127.0.0.1 para localhost
InetAddress IPAddress = InetAddress.getByName(args[0]);
// Puerto
int servPort = (args.length == 2) ? Integer.parseInt(args[1]) : 7;
BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientSocket = new DatagramSocket();
String sentence = "HELLO";
while (!quit) {
byte[] receiveData = new byte[255];
if (sentence != ("HELLO") )
sentence = keyboard.readLine();
DatagramPacket receivePacket = new DatagramPacket(receiveData,
receiveData.length);
Service.Command comando = Service.commandFromString(sentence);
Service.sendUDPcommand(clientSocket, sentence, IPAddress, servPort);
clientSocket.receive(receivePacket);
String modifiedSentence = new String(receivePacket.getData(), 0,
receivePacket.getLength());
Service.Response respuesta =
Service.responseFromString(modifiedSentence);
if(respuesta==Service.Response.WCOME)
System.out.println("Welcome to FTP Service...");
if (comando!= Service.Command.HELLO){
if(respuesta == Service.Response.PORT) {
int puerto = Service.portFromResponse(modifiedSentence);
Socket dataSocket = new Socket(IPAddress,puerto);
dataIs = dataSocket.getInputStream();
dataOs = dataSocket.getOutputStream();
dataScanner = new Scanner(dataIs);
dataWriter = new PrintWriter(dataOs,true);
System.out.println("Socket Datos en "
+ dataSocket.getInetAddress() +
" puerto " + dataSocket.getPort());
userInputScanner = new Scanner(System.in);
if(comando==Service.Command.GET) {
String fileName =
Service.requestedFile(sentence);
do_get(fileName,dataSocket);
dataSocket.close();
System.out.println("CIERRE CONEXION DATOS");
clientSocket.receive(receivePacket);
modifiedSentence = new
String(receivePacket.getData(), 0, receivePacket.getLength());
Service.Response OK =
Service.responseFromString(modifiedSentence);
if(OK == Service.Response.OK){
System.out.println("Transfer OK");
}else if(OK ==Service.Response.SERVERROR){
System.out.println("File not found");
}
}else if(comando==Service.Command.LIST){
System.out.println("LIST");
list();
dataSocket.close();
System.out.println("CIERRE CONEXION DATOS TCP");
clientSocket.receive(receivePacket);
modifiedSentence = new
String(receivePacket.getData(), 0, receivePacket.getLength());
Service.Response OK =
Service.responseFromString(modifiedSentence);
if(OK == Service.Response.OK){
System.out.println("Transfer
OK");
}else if(OK
==Service.Response.SERVERROR){
System.out.println("Transfer
error");
}
}
}else if(respuesta == Service.Response.BYE) {
System.out.println("Bye...");
quit = true;
}else if(respuesta == Service.Response.UNKNOWN){
System.out.println("Command Error, try again");
} else {
comando = Command.ERROR;
System.out.println(respuesta);
System.out.println("Comando no admitido introduzca otro:
");
}
}
// System.out.println(sentence);
sentence ="";
}
clientSocket.close();
}
}
-----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
java.io.*;
java.net.*;
java.util.*;
java.lang.*;
socket.send(packet);
// get response
packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
// display response
String received = new String(packet.getData(), 0);
System.out.println("Quote of the Moment: " + received);
socket.close();
}
}
}
}
Servidor Datagrama Multicast Java:
import java.io.*;
import java.net.*;
import java.util.*;
public class multiServer {
public static void main(String[] args) throws IOException {
byte[] buf = new byte[256];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
MulticastSocket socket = new MulticastSocket(4445);
// las direcciones multicast rango: 224.0.0.1 a 239.255.255.255
socket.joinGroup(InetAddress.getByeName(args[0]));
socket.receive(packet);
String recibido = new String(packet.getData(),0);
System.out.println("llego paquete: " + recibido);
InetAddress address = packet.getAddress();
int port = packet.getPort();
packet = new DatagramPacket(buf, buf.length, address, port);
socket.send(packet);
socket.close();
}
import java.util.LinkedList;
DINING HALL
e.printStackTrace();
}
}
if(langostas==0){
bandejaVacia=true;
notifyAll();
}else{
langostas--;
_colaComensales.remove();
System.out.println("comiendo comensal
langostas");
notifyAll();
}
}
public static void main(String[] args) {
Monitor monitor = new Monitor();
for (int i = 0; i <50; i++) {
new Comensal(i, monitor).start();
}
for (int i = 0; i <4; i++) {
new Camarero(i, monitor).start();
}
}
}
----------------------------------------------------------------------------------public class llamante {
}
}
------------------------------------------------------------------------------------------------------public class Monitor {
LinkedList<Long> zar = new LinkedList<Long>();
LinkedList<Long> hues = new LinkedList<Long>();
int zara=0;
int oscen=0;
boolean turnoZ=true;
boolean turnoH=true;
boolean vacio=true;