serverBir localhost bağlantı noktasını dinleme değil, birkaç bağlantı noktası denedim. zaman aşımı çizgisi olmadan bile çalışmıyor. Lütfen bu koddaki herhangi bir değişikliği önerin.serverSocket dinlemiyor
public class server1 extends JApplet implements Serializable{
static JApplet japplet = new JApplet();
private static ServerSocket serverSocket = null;
private static Socket clientSocket = null;
private static final int maxClientsCount = 5;
private static final clientThread[] threads = new clientThread[maxClientsCount];
public void init() {
tool = Toolkit.getDefaultToolkit();
setup_applet();
setup_layout();
run();
}
public void run() {
try {
serverSocket = new ServerSocket(6789);
serverSocket.setSoTimeout(60000);
while (true) {
screen.init_Screen();
clientSocket = serverSocket.accept();
int i = 0;
for (i = 0; i < maxClientsCount; i++) {
if (threads[i] == null) {
(threads[i] = new clientThread(clientSocket, threads))
.start();
break;
}
}
if (i == maxClientsCount) {
clientSocket.close();
}
}
} catch (IOException e) {
System.out.println(e);
}
}
}
class clientThread extends Thread implements Serializable {
private String clientName = null;
private PrintStream os = null;
private Socket clientSocket = null;
private final clientThread[] threads;
private int maxClientsCount;
public clientThread(Socket clientSocket, clientThread[] threads) {
this.clientSocket = clientSocket;
this.threads = threads;
maxClientsCount = threads.length;
}
public void run() {
int maxClientsCount = this.maxClientsCount;
clientThread[] threads = this.threads;
try {
os = new PrintStream(clientSocket.getOutputStream());
while (true) {
String msg = "server:apl";
synchronized (this) {
for (int i = 0; i < maxClientsCount; i++) {
if (threads[i] != null && threads[i] == this) {
os.println(msg);
break;
}
}
}
synchronized (this) {
for (int i = 0; i < maxClientsCount; i++) {
if (threads[i] != null && threads[i] != this
&& threads[i].clientName != null) {
BufferedImage image = ImageIO.read(clientSocket.getInputStream());
if(image != null) {
soms1.screen.paint(image.getGraphics());
} else {
System.out.println("failed to get");
}
}
}
}
os.close();
}
} catch (IOException e) {
System.out.println(e);
}
}
Güvenlik duvarını denetledim ve bağlantı noktaları başka bir işlem tarafından kullanılmadıysa. herhangi bir yardım için teşekkür ederiz.
Bunun neden çalışmadığını anlamıyorum. serverSocket.accept(); 'yeni bir bağlantı için bekleyecektir. Kodunuz, aslında sunucu soketine bağlanmadığınız sürece yeni bir istemci iş parçacığı başlattığınız satıra ulaşmaz. İstemci soketinin kodunu da eklemenizi öneririm –