试试用synchronized 关键字锁定一下你的socket对象.全局变量在你调用的方法里应该初始化一次,因为在一个servlet生命周期里,只会初始化一次;
例如:
....
public class TestServlet extends ...
{
public String lA = "";
.....
private void InitVar()
{
lA = "";
.......
}
public void doGet(..,..)
{
InitVar();//
}
......
}
例如:
....
public class TestServlet extends ...
{
public String lA = "";
.....
private void InitVar()
{
lA = "";
.......
}
public void doGet(..,..)
{
InitVar();//
}
......
}
声明的对象,可以是static,构造函数可以用private
然后由一个线程依次执行
{
//初始化Socket
Socket skt;
skt=new Socket(hostName,9999);
DataOutputStream outnet=new DataOutputStream(skt.getOutputStream());
DataInputStream innet=...; try{
String cmd=request.getParameter("cmd")
if (cmd == "...")
{
//开始向服务端发送数据
outnet.writebyte();
...
//接受从服务端返回的数据
type = innet.reabyte();
//把数据返回客户端
out.println(type)
num = innet.readbyte();
out.println(num);
}
}
catch(IOException e){}
}
pbublic void destroy()
{
skt.close;
}客户端程序:发送数据
URL u = new URL(http://localhost/servlet?cmd=...&hostName=...&...取数据所需要的参数)
BufferedRead innet=new ...
// 读取数据
String InputLine = innet.readln();
type = 把InputLine转换为Byte大致框架就是如此!我想问题可能会出现在Servlet上。客户端中去数据的部分是每次去10个,所以有一个循环。当客户端取回数据1-9为空值的时候,捕捉异常中的异常处理是:
continue;
也就是说,返回刚才1-9重新取一次!中间没有停顿!