Hallo zusammen!
Hab folgenden Code zum versenden von Messages via UDP zusammengekleistert:
DatagramSocket toSocket;
public boolean send(String message) throws Exception
{
InetAddress ia;
ia = InetAddress.getByName( "localhost" );
int port = 4713;
String s = message;
byte[] data = s.getBytes();
DatagramPacket packet = new DatagramPacket( data, data.length, ia, port );
toSocket = new DatagramSocket();
toSocket.send( packet );
toSocket.disconnect();
return true;
}
Alles anzeigen
Der Code funktioniert auch recht gut und sendet seine Packete raus an irgendjemanden der halt grad an Port 4713 abhört (oder auch nicht ^^)
Dadurch dass ich aber toSocket mit dem Konstruktor DatagramSocket() aufrufe sucht sich der Client der den Code ausführt für jede Message die er sendet einen neuen, freien Port. Das endet dann darin dass mir irgendwann die freien Ports ausgehen da die verwendeten Ports nicht sofort nach dem senden wieder freigegeben werden. könnt ihr gerne ausprobieren das gibt lustige probleme mit Internet, OS usw... :cool:
socket.close() am ende habe ich probiert, da funktioniert dann gar nichts mehr. wenn ich dem Konstruktor einen zu verwendenden Port übergebe dann funktionierts nur ab und zu, so jede 300ste message kriegt den Port wieder frei ^^.
gibts in java ne möglichkeit dem betriebssystem zu "schwören" dass der port sofort wieder freizugeben ist?