G
Guest
Gast
In folgendem Programm soll ein Client über einen Socket ein Datagramm, sprich eine anfrage an den Server schicken und als Antort ein Zitat, also einen String bekommen.
Da ich mich grade erst in Netzwerkprogrammierung mit Java einarbeite hatte ich versucht dem Tutorial "QuoteServerThread" unter java.sun...probiert aber komme irgendwie nicht mehr weiter.
Ist auch das erste mal dass ich 2 Klassen, sprich erst den Server, dann natürlich erst den anfragenden Client "anschalte"....wäre ja nicht das Problem, nur dass er mir mit Eclipse(die Programmierumgebung die ich nutze) nun komischerweise, nur eine der beiden main()-Methoden, die vom Server zum starten angeboten wird...
Hier die 3 Klassen...und der Text-File mit den "Zitaten"(Strings) die ausgegeben werden sollen:
Da ich mich grade erst in Netzwerkprogrammierung mit Java einarbeite hatte ich versucht dem Tutorial "QuoteServerThread" unter java.sun...probiert aber komme irgendwie nicht mehr weiter.
Ist auch das erste mal dass ich 2 Klassen, sprich erst den Server, dann natürlich erst den anfragenden Client "anschalte"....wäre ja nicht das Problem, nur dass er mir mit Eclipse(die Programmierumgebung die ich nutze) nun komischerweise, nur eine der beiden main()-Methoden, die vom Server zum starten angeboten wird...
Hier die 3 Klassen...und der Text-File mit den "Zitaten"(Strings) die ausgegeben werden sollen:
Code:
import java.io.*;
public class QuoteServer
{
public static void main(String[] args) throws IOException
{
new QuoteServerThread().start();
}
}
#############################################
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Date;
public class QuoteServerThread extends Thread
{
private DatagramSocket socket;
private BufferedReader in;
public QuoteServerThread() throws IOException
{
this.setName("QuoteServer");
//this("QuoteServer");
}
public QuoteServerThread(String name) throws IOException
{
super(name);
socket=new DatagramSocket(4445);
try
{
in=new BufferedReader(new FileReader("one-liners.txt"));
}
catch (FileNotFoundException e)
{
System.err.println("Datei konnte nicht geöffnet werden"+"Zeit:");
}
}
public void run()
{
while (true)
//while (moreQuotes==true)
{
byte[] buf=new byte[256];
DatagramPacket packet=new DatagramPacket(buf, buf.length);
try
{
socket.receive(packet);
}
catch (IOException e)
{
e.printStackTrace();
}
/**
* Jetzt wird die Antwort konstruiert:
*/
String dString=null;
if (in==null)
{
dString=new Date().toString();
}
else
{
//dString=getNextQuote();
buf=dString.getBytes();
}
/**
* Jetzt wird die konstruierte Antwort über
* den DatagramSocket an den Client geschickt:
*/
InetAddress address=packet.getAddress();
int port=packet.getPort();
packet=new DatagramPacket(buf, buf.length, address, port);
try
{
socket.send(packet);
}
catch (IOException e)
{
e.printStackTrace();
System.out.println("socket.send ist fehlgeschlagen!");
}
socket.close();
}
}
}
###########################################################
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class QuoteClient
{
public static void main (String[] args,int port,InetAddress address,DatagramSocket socket,
DatagramPacket packet,byte[] sendBuf)
{
if (args.length!=1)
{
System.out.println("Für: Client<hostname>");
return;
}
/**
* Hier sendet die QuoteClient-Anwendung
* eine Anfrage an den Server:
*/
byte[] buf=new byte[256];
try
{
DatagramSocket ds=new DatagramSocket();
InetAddress ia=InetAddress.getByName(args[0]);
DatagramPacket dp=new DatagramPacket(buf,buf.length,ia,4445);
ds.send(dp);
}
catch (SocketException e)
{
e.printStackTrace();
System.out.println("socket.send hat versagt!");
}
catch (UnknownHostException e)
{
e.printStackTrace();
System.out.println("Internet-Addresse???");
}
catch (IOException e)
{
e.printStackTrace();
}
/**
* Nachdem der Client eine Nachricht vom
* Server erhalten hat zeigt er diese an:
*/
packet=new DatagramPacket(buf,buf.length);
try
{
socket.receive(packet);
}
catch (IOException e)
{
e.printStackTrace();
}
String received=new String(packet.getData(),0,packet.getLength());
System.out.println("Zitat des Moments:"+received);
}
}
##################---one-liners.txt---#####################################
Life is wonderful. Without it we'd all be dead.
Daddy, why doesn't this magnet pick up this floppy disk?
Give me ambiguity or give me something else.
I.R.S.: We've got what it takes to take what you've got!
We are born naked, wet and hungry. Then things get worse.
Make it idiot proof and someone will make a better idiot.
He who laughs last thinks slowest!