zhj92lxs 老师给在下的指点,通过下边的代码,可以从client发送信息到服务器端,server并能成功接收
服务器端可以通过这个client连接,取得client的IP及端口!那么,如何让server端,按需给client端发送信息呢?或者说,即便这一分钟收到一个client的信息,但server端并不急于去回复这个client,只当等到server的某个事情被激发(比如按钮按下,比如时间到某个时刻等),或者说服务器与client收发异步(说异步也许是不正确的) 请老师指教!!!
void waitlink()
{
try
{
ss=new ServerSocket(9091);
servers=ss.accept(); sdis=new BufferedReader(isr=new InputStreamReader(servers.getInputStream())); //bw=new BufferedWriter(osw=new OutputStreamWriter(servers.getOutputStream()));
String lineStr = null;
while((lineStr=sdis.readLine())!=null)
{ jta1.setText(jta1.getText()+lineStr);
jta1.repaint();
System.out.println(lineStr);
}
ss.close();
//bw.write("hello");
}
catch(Exception e)
{
e.printStackTrace();
}
}
服务器端可以通过这个client连接,取得client的IP及端口!那么,如何让server端,按需给client端发送信息呢?或者说,即便这一分钟收到一个client的信息,但server端并不急于去回复这个client,只当等到server的某个事情被激发(比如按钮按下,比如时间到某个时刻等),或者说服务器与client收发异步(说异步也许是不正确的) 请老师指教!!!
void waitlink()
{
try
{
ss=new ServerSocket(9091);
servers=ss.accept(); sdis=new BufferedReader(isr=new InputStreamReader(servers.getInputStream())); //bw=new BufferedWriter(osw=new OutputStreamWriter(servers.getOutputStream()));
String lineStr = null;
while((lineStr=sdis.readLine())!=null)
{ jta1.setText(jta1.getText()+lineStr);
jta1.repaint();
System.out.println(lineStr);
}
ss.close();
//bw.write("hello");
}
catch(Exception e)
{
e.printStackTrace();
}
}
void waitlink()
{
try
{
ss=new ServerSocket(9091);
servers=ss.accept(); sdis=new BufferedReader(isr=new InputStreamReader(servers.getInputStream())); //bw=new BufferedWriter(osw=new OutputStreamWriter(servers.getOutputStream()));
String lineStr = null;
while((lineStr=sdis.readLine())!=null)
{ jta1.setText(jta1.getText()+lineStr);
jta1.repaint();
System.out.println(lineStr);
}
ss.close();
//bw.write("hello");
}
catch(Exception e)
{
e.printStackTrace();
}
}
分析从客户端接受到的字符,如果是想要一分钟以后回的消息,那么将flag置为true;
当服务器端触发事件如:jbutton.addActionListener(this)时,在actionperform中的代码判断一下,
如果flag为true,那么此时就向客户端发送一条XXX消息。
...
}
ss.close();
调用一个死循环,除非在while里用break;否则永远在接受数据。
完全搞不明白。
谢谢以上的大大!