G
Guest
Gast
Hi ich hab kurze frage zu UDP:
Client und Server sind auf dem selben PC.
Client sagt das der Port 27900 schon belegt ist.
Wenn ich die applikation meinem vServer starte und mich lokal damit verbinde scheint es so alsob keine Verbindung offen ist.
Hier die Klassen:
Server:
hier das client-applet:
Client und Server sind auf dem selben PC.
Client sagt das der Port 27900 schon belegt ist.
Code:
message = testTCP(server, message, 6667);
message = testTCP(server, message, 28910);
message = testTCP(server, message, 29900);
message = testTCP(server, message, 29920);
textArea.setText(message);
message = testUDP(server, message, 27900);
message = testUDP(server, message, 4321);
Wenn ich die applikation meinem vServer starte und mich lokal damit verbinde scheint es so alsob keine Verbindung offen ist.
Hier die Klassen:
Server:
Code:
package de;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.ServerSocket;
import java.net.Socket;
public class Tester{
public static class UDPTester extends Thread {
public final int port;
private final DatagramPacket paket;
public UDPTester(int port) {
super("UDP " + port);
this.port = port;
paket = new DatagramPacket(new byte[256], 256);
}
public void run() {
while (isAlive()) {
DatagramSocket socket;
try {
socket = new DatagramSocket(port);
for (;;) {
// Warten auf nächstes Paket
socket.receive(paket);
String text = new String(paket.getData(), 0, paket
.getLength());
paket.setData(text.toUpperCase().getBytes());
socket.send(paket);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public static class TCPTester extends Thread {
public final int port;
private ServerSocket serSock;
public TCPTester(int port) throws IOException {
super("TCP " + port);
this.port = port;
serSock = new ServerSocket(port);
}
public void run() {
while (isAlive()) {
try {
Socket accept = serSock.accept();
String string = "Connection OK to port: " + port;
accept.getOutputStream().write(string.getBytes());
accept.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
try {
TCPTester t6667 = new TCPTester(6667);
TCPTester t28910 = new TCPTester(28910);
TCPTester t29900 = new TCPTester(29900);
TCPTester t29920 = new TCPTester(29920);
UDPTester u4321 = new UDPTester(4321);
UDPTester u27900 = new UDPTester(27900);
// Starten
t6667.start();
t28910.start();
t29900.start();
t29920.start();
u4321.start();
u27900.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
hier das client-applet:
Code:
package de;
import java.io.InputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.Socket;
import javax.swing.JApplet;
import javax.swing.JTextArea;
public class CNCTestApplet extends JApplet {
private JTextArea textArea;
@Override
public void init() {
textArea = new JTextArea("Tester (re)initialized.");
getContentPane().add(textArea);
}
public void start() {
String server = getDocumentBase().getHost();
if (server.equals(""))
server = "[i]xx.xx.xx.xx[/i]";
String message = "\nServer: " + server;
message = testTCP(server, message, 6667);
message = testTCP(server, message, 28910);
message = testTCP(server, message, 29900);
message = testTCP(server, message, 29920);
textArea.setText(message);
message = testUDP(server, message, 27900);
message = testUDP(server, message, 4321);
textArea.setText(message);
}
private String testTCP(String server, String message, int port) {
message += "\n";
try {
message += "Try Connect to port " + port;
message += "\n";
Socket s = new Socket(server, port);
InputStream is = s.getInputStream();
byte read = ':';
int chars = 0;
while (s.isBound() && chars < 200 && read != -1) {
message += (char) read;
chars++;
read = (byte) is.read();
}
} catch (Exception e) {
message += e;
}
return message;
}
private String testUDP(String server, String message, int port) {
message += "\n";
try {
message += "Try Connect to port " + port;
message += "\n";
DatagramPacket dp = new DatagramPacket(new byte[256], 256);
InetAddress byName = InetAddress
.getByName(server);
DatagramSocket ds = new DatagramSocket(port, byName);
ds.setSoTimeout(200);
ds.receive(dp);
String string = new String(dp.getData());
message += string;
ds.close();
} catch (Exception e) {
message += e;
}
return message;
}
}