homer56
23-10-2006, 13:45
Hallo zusammen
Hab ein kleines Problem mit dem übermitteln per UDP. Der Client versucht immer die ganzen 1024 Bytes anzuzeigen.
Server:
import java.net.*;
import java.io.*;
class UDPServer
{
public static void main(String[] args)
{
byte [] buffer = new byte[1024];
String myMessage ;
try
{
// Create a Datagram Socket
DatagramSocket socket = new DatagramSocket(Integer.parseInt(args[0]));
// Create an empty Datagram Packet
DatagramPacket packet = new DatagramPacket(buffer, buffer.length );
// receive request from client and get client info
socket.receive(packet);
InetAddress client = packet.getAddress();
int client_port = packet.getPort();
System.out.println(" Received "+new String(buffer)+" from "+client);
// send some data to the client
myMessage = "Angekommen!";
buffer = myMessage.getBytes("US-ASCII") ;
packet = new DatagramPacket(buffer, buffer.length, client, client_port);
socket.send(packet);
}
catch(UnknownHostException e){ System.out.println(e); }
catch(IOException e){ System.out.println(e); }
}
}
Client:
import java.net.*;
import java.io.*;
class UDPClient {
public static void main (String args []) {
byte [] buffer = new byte[1024];
String host = "127.0.0.1";
int port = 666; // default: local echo service
//host = args[0];
//port = Integer.parseInt(args[1]);
try{
// Create a Datagram Socket
DatagramSocket socket = new DatagramSocket();
// Create a packet with server information
InetAddress server = InetAddress.getByName(host);
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, server, port);
// Send the packet
socket.send(packet);
// receive request from client and get client info
packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
//InetAddress client = packet.getAddress();
//int client_port = packet.getPort();
System.out.println(new String(buffer));
}
catch(UnknownHostException e){ System.out.println(e); }
catch(IOException e){ System.out.println(e); }
}
}
Die Ausgabe vom Client:
Angekommen![][][][][][][][].....
Ausgabe vom Server:
Received[][][][][][][][][][].....
[] wird so lange angezeigt bis die 1024 Bytes verbraucht sind.
Die Rot hervorgehobenen Stellen werden wohl die Schuldigen sein, aber ich finde irgendwie nicht heraus was ich anderst machen soll.
Hab ein kleines Problem mit dem übermitteln per UDP. Der Client versucht immer die ganzen 1024 Bytes anzuzeigen.
Server:
import java.net.*;
import java.io.*;
class UDPServer
{
public static void main(String[] args)
{
byte [] buffer = new byte[1024];
String myMessage ;
try
{
// Create a Datagram Socket
DatagramSocket socket = new DatagramSocket(Integer.parseInt(args[0]));
// Create an empty Datagram Packet
DatagramPacket packet = new DatagramPacket(buffer, buffer.length );
// receive request from client and get client info
socket.receive(packet);
InetAddress client = packet.getAddress();
int client_port = packet.getPort();
System.out.println(" Received "+new String(buffer)+" from "+client);
// send some data to the client
myMessage = "Angekommen!";
buffer = myMessage.getBytes("US-ASCII") ;
packet = new DatagramPacket(buffer, buffer.length, client, client_port);
socket.send(packet);
}
catch(UnknownHostException e){ System.out.println(e); }
catch(IOException e){ System.out.println(e); }
}
}
Client:
import java.net.*;
import java.io.*;
class UDPClient {
public static void main (String args []) {
byte [] buffer = new byte[1024];
String host = "127.0.0.1";
int port = 666; // default: local echo service
//host = args[0];
//port = Integer.parseInt(args[1]);
try{
// Create a Datagram Socket
DatagramSocket socket = new DatagramSocket();
// Create a packet with server information
InetAddress server = InetAddress.getByName(host);
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, server, port);
// Send the packet
socket.send(packet);
// receive request from client and get client info
packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
//InetAddress client = packet.getAddress();
//int client_port = packet.getPort();
System.out.println(new String(buffer));
}
catch(UnknownHostException e){ System.out.println(e); }
catch(IOException e){ System.out.println(e); }
}
}
Die Ausgabe vom Client:
Angekommen![][][][][][][][].....
Ausgabe vom Server:
Received[][][][][][][][][][].....
[] wird so lange angezeigt bis die 1024 Bytes verbraucht sind.
Die Rot hervorgehobenen Stellen werden wohl die Schuldigen sein, aber ich finde irgendwie nicht heraus was ich anderst machen soll.