Dostosuj do swoich potrzeb ten program
/* Program do jednostronnej komunikacji między komputerami
* Komputer odbierający korzysta z portu 9999
*/
import java.net.*;
public class UDP
{
static int port=9999;
static final int BUFOR_SIZE=1024;
static DatagramSocket ds;
static byte[] bufor=new byte[BUFOR_SIZE];
static InetAddress ia=null;
//------------------------
public static void main(String args[])
{
if (args.length==0)
{
System.out.println("Użycie programu: java UDP n|o [nr_portu] [nazwa_hosta]");
return;
}
boolean nadawca=false;
if (args[0].equalsIgnoreCase("n"))
{
nadawca=true;
}
// numer portu - domyślnie 9999
if (args.length>1)
{
try
{
port=Integer.parseInt(args[2]);
}
catch(Exception e)
{
port=9999;
}
}
// komputer odbierający - domyślnie jest to localhost
try
{
if (args.length>2)
{
ia=InetAddress.getByName(args[2]);
}
else
{
ia=InetAddress.getLocalHost();
}
}
catch(UnknownHostException e)
{
System.out.println("Nieznany host: "+e.getMessage());
return;
}
try
{
if (nadawca)
{
// program pracuje jako nadawca
ds=new DatagramSocket();
write();
}
else
{
// program pracuje jako odbiorca
ds=new DatagramSocket(port);
read();
}
}
catch(Exception e)
{
System.out.println("Problem: "+e.getMessage());
return;
}
}
//------------------------
public static void write() throws Exception
{
int pos=0;
System.out.println("Host: "+ia.getHostName()+" "+ia.getHostAddress()+" Port: "+port);
System.out.println("Aby wysłać napisz coś i naciśnij ENTER \n Aby skończyć naciśnij TAB i ENTER");
while (true)
{
int c=System.in.read();
switch (c)
{
case '\r':
// koniec wiersza w DOS-ie to \r\n, znak \r nie jest wysyłany
break;
case '\t':
System.out.println("Koniec pracy nadajnika");
bufor[pos++]=(byte) c;
ds.send(new DatagramPacket(bufor,pos,ia,port));
return;
case '\n':
ds.send(new DatagramPacket(bufor,pos,ia,port));
pos=0;
break;
default:
bufor[pos++]=(byte) c;
}
}
}
//------------------------
public static void read() throws Exception
{
System.out.println("Czekam na wiadomości .. (port: "+port+")");
while(true)
{
DatagramPacket dp=new DatagramPacket(bufor,bufor.length);
ds.receive(dp);
String input=new String(dp.getData(),0,dp.getLength());
System.out.println(input);
if (input.indexOf("\t")>=0)
{
break;
}
}
}
}