PDA

Visualizza la versione completa : [JAVA] Applicazione client/server basata su UDP con Ack


pemanu
14-10-2005, 09:57
Ciao a tutti, volevo un aiuto devo realizzare una applicazione client server con protocollo udp con ack. Il client ed il server girano sulla stessa macchina
Grazie anticipatamnete

Andrea1979
14-10-2005, 16:01
credo che nessuno potrà darti risposta: così come l'hai messa, sembra che tu stia cercando qualcuno che ti scriva il programma da 0... comincia col postare codice di tuo pugno e a dire che problemi hai incontrato. Se il problema è partire, leggi una guida o contatta il tuo professore/insegnante/committente.
:ciauz:

billiejoex
14-10-2005, 21:40
"protocollo udp con ack"? Che significa?

pemanu
14-10-2005, 22:11
Visto che sono stato poco chiaro ora mi spiego questo è il codice del client realizzato da me


import java.io.*;
import java.net.*;

public class UDPClient {
static final int PORT= 2200;
static final int bufLen = 512;
static final PrintStream dspl = System.out;


public static void main(String[] argv){
try {

InetAddress serverAddress = InetAddress.getLocalHost();
DatagramSocket UDPsocket = new DatagramSocket();

BufferedReader uin = new BufferedReader(
new InputStreamReader(System.in));

byte[] outBuffer;
byte[] inBuffer = new byte[bufLen];
DatagramPacket outDatagram;
DatagramPacket inDatagram = new DatagramPacket(inBuffer,inBuffer.length);
String cmd;
int cnt = 0;
do {

cmd = cnt+" <"+uin.readLine()+">";
cnt++;
outBuffer = cmd.getBytes();
outDatagram = new DatagramPacket(outBuffer,outBuffer.length,
serverAddress,PORT);
dspl.println(new String(outDatagram.getData()));
UDPsocket.send(outDatagram);
try {
inDatagram.setLength(inBuffer.length);
UDPsocket.receive(inDatagram);
dspl.println("ack: "+
new String(inDatagram.getData(),0,inDatagram.getLength ()));
}
catch(InterruptedIOException e) {
dspl.println("Timeout attesa ack!");
}
} while(!cmd.endsWith("<quit>")); /* fine interazione */
}
catch(IOException e) {
e.printStackTrace();
}
}
}
import java.io.*;
import java.net.*;
import java.util.Date;

public class UDPServer {
static final int PORT= 2200;
static final int bufLen = 512;

static final PrintStream dspl = System.out;




public static void main(String[] argv){
try {

DatagramSocket UDPsocket = new DatagramSocket(PORT);
String localAddress = InetAddress.getLocalHost().getHostName().trim();
int localPort = UDPsocket.getLocalPort();
dspl.println(localAddress+"["+localPort+"] LISTEN");


byte[] outBuffer;
byte[] inBuffer = new byte[bufLen];


DatagramPacket outDatagram;
DatagramPacket inDatagram = new DatagramPacket(inBuffer,inBuffer.length);


String data;
do {


inDatagram.setLength(inBuffer.length);

UDPsocket.receive(inDatagram);
InetAddress destAddress = inDatagram.getAddress();
String destHost = destAddress.getHostName().trim();
int destPort = inDatagram.getPort();
dspl.print("> "+destHost+"["+destPort+"] : ");
data = new String(inDatagram.getData(),0,inDatagram.getLength ());
dspl.println(data);

String ack = new Date().toString() + " rcv: " +data;
outBuffer = ack.getBytes();
outDatagram = new DatagramPacket(outBuffer,outBuffer.length,
destAddress,destPort);
UDPsocket.send(outDatagram);
} while(!data.endsWith("<quit>"));
}
catch(IOException e) {
e.printStackTrace();
}
}
}

ma non riesco a farli comunicare il server sta in ascolto alla porta ma il client non comunica.
l'errore che mi da netbeans è

Cannot assign requested address: Datagram send failed

Spero di essere stato chiaro. client e server girano sullo stesso pc

Johnny_Depp
14-10-2005, 23:33
ciao, ti informo che nel titolo bisogna sempre specificare il lingusaggio di prog.

alka
15-10-2005, 14:36
Originariamente inviato da pemanu
Visto che sono stato poco chiaro ora mi spiego questo è il codice del client realizzato da me
Volevo segnalare che ho provveduto a "fondere" la discussione che hai aperto con quella precedentemente avviata sullo stesso argomento.

Ad ogni argomento, una sola discussione. :)

Ciao! :ciauz:

Loading