可行吗?  <%
   String result=null;
   Listen listen = new Listen();
   listen.Listen();

while(result==null){
result = listen.getstring();
}
   result = listen.getstring();
   out.write(result,0,result.length());
  %>listen是我自己写的一个服务端,不过运行到listen.Listen();的时候就报错了
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: An exception occurred processing JSP page /test.jsp at line 3027:   <%
28:    String result=null;
29:    Listen listen = new Listen();
30:    listen.Listen();
31: 
32:  while(result==null){
33:  result = listen.getstring();
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:404)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause java.net.BindException: Address already in use: JVM_Bind
java.net.PlainSocketImpl.socketBind(Native Method)
java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
java.net.ServerSocket.bind(ServerSocket.java:319)
java.net.ServerSocket.<init>(ServerSocket.java:185)
java.net.ServerSocket.<init>(ServerSocket.java:97)
socket.Listen.Listen(Listen.java:24)
org.apache.jsp.test_jsp._jspService(test_jsp.java:91)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.求教public class Listen extends Thread{ 
static BufferedReader in;
public static String str;

public void Listen( ) throws IOException 
{
ServerSocket s = new ServerSocket(6666);
Socket socket = s.accept();

in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

start();
}

public String getstring(){
return str;
}
public void run(){
try{
while(true){
str = in.readLine();
if(str.equals("22")){
break;
}
} }catch(IOException e){
e.printStackTrace();
}finally{
//System.out.println("close io");
}
}} 

解决方案 »

  1.   

    Address already in use: JVM_Bind 
    地址已经被占用改下端口应该就可以了
      

  2.   


    但是如果不不加
    30:  listen.Listen(); 
    就可以运行的,这其中是怎么个道理呢?我加载页面的时候可以开启socket监听吗?谢谢
      

  3.   

    27:   <%
    28:    String result=null;
    29:    ServerSocket s = new ServerSocket(6666);
    30:  Socket socket = s.accept();改成上面的代码的话,到29行也就报错了,错误一样
      

  4.   

      <% 
     String result=null; 
     ServerSocket s = new ServerSocket(6666); 
     Socket socket;
     while(socket=s.accept())
     {
     } server 端应该一直在监听
      

  5.   

    靠,不加listen都不监听,还能出什么错?