我啓動服務器程序客戶端套接字,並等待客戶端只需30 seconds.It工作正常,在第一次迭代,並在剩餘iterations.Any建議不等待。製作服務器套接字等待在每次迭代
這裏
minLinkWt() sets the index.
然而仍然在程序相同。
import java.sql.*;
import java.net.*;
import java.lang.*;
class Democ{
int index,port,min=100;
ServerSocket ss=null;
Socket s=null;
void begin(){
int av=0;boolean b=false;
minLinkWt();
while(!b){
av=checkStatus(index);
if(av==1){b=true;}
}
if(av==1)
Connect();
else
System.out.println("No Routers Available");
}
void Connect()
{
System.out.println("Enter the Message to send to clients::");
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String msg=br.readLine();
PrintStream ps=new PrintStream(s.getOutputStream());
ps.println(msg);
}catch(Exception e){e.printStackTrace();}
}
void callSwitch(int index_formal)
{
switch(index_formal)
{
case 1:
port=2000;
break;
case 2:
port=2001;
break;
case 3:
port=2002;
break;
case 4:
port=2003;
break;
default:
System.out.println("No Routers in Available");
}
}
int checkStatus(int index_formal){
try
{
ss=new ServerSocket(port);
ss.setSoTimeout(30000);
s=ss.accept();
}catch(InterruptedIOException e){
System.out.println("Cannot connect through Router1 Waiting for Router2");}
catch(Exception g){g.printStackTrace();}
if(s==null)
return 0;
else
return 1;
}
class DemoCopy{
public static void main(String s[])
{
Democ obj=new Democ();
obj.begin();
}
}
所以在每次迭代中,服務器必須等待客戶端,但不等待。 我得到的輸出
hello
hello
hello
hello
min is6
AT index2
Cannot connect through Router1 Waiting for Router2
No Routers Available
我已經設定服務器來監聽不同的端口號在同一program.When它第一次聽上說的端口號2000,然後再次,如果在我的代碼我試圖更改端口號,然後我得到連接重置exception.So我想到了上面這段代碼。 – Intriguing
你能建議我什麼時候我應該打開和關閉連接套接字以獲得在這種情況下等待的時間。 – Intriguing
等待......如果您編程服務器每次聽取不同的端口,您如何讓客戶知道哪些端口可用?根據你的問題「讓服務器套接字在每次迭代中等待客戶端套接字」,你應該只打開一個特定端口號爲ONLY ONCE的服務器套接字,並在while循環中調用serverSocket.accept(),這樣服務器就會建立連接並返回連接到客戶端的套接字對象。 – wonhee