你可以看看你的程序是不是在关闭了socket链接后,又进行了socket通讯。
解决方案 »
- 如何让socket客户端实时接收到server发来的数据?
- 关于Ftpclient类的问题,请指点一下,谢谢.
- 各位大虾帮帮忙为什么我的程序得不到结果。急急急急!!!!!
- 看完Think in java想住是J2EE方面发展,应该怎么学,看哪些书??
- 刚学java 一个很简单的问题。
- 大家试着翻译一下下面的几句英文(出自Robocode的API的文档中)
- Applet关闭的小问题!送分!
- 谁会:JAVA如何与VB联系?(应用程序之间的接口问题)
- JDBC的问题,新手高手都来看看吧,说不定能帮帮我这个新手呢,谢谢!
- 哪位可以告诉我用JAVA怎样和ORACLE数据库连上。。。。。
- 我还想问一个问题,就是在JB里在什么地方可以直接写完全自己的代码运行它?
- 为什么选java?(连带散分)
import java.net.*;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
class PostClientPanel extends JPanel implements ActionListener
{
public PostClientPanel()
{
strOutput=new String("输出初始化!");
vctFromServ.clear();
vctFromServ.add("输入初始化!");
cmdStep1=new JButton("第一步");
cmdStep2=new JButton("第二步");
add(cmdStep1);
add(cmdStep2);
cmdStep1.addActionListener(this);
cmdStep2.addActionListener(this);
}
public void actionPerformed(ActionEvent evt)
{
Object source=evt.getSource();
if(source==cmdStep1)
{
strOutput="第一步";
try
{
//向server发送消息
System.out.println("Before Step1 connection!");
url=new URL("http://localhost/PostServer");
con=url.openConnection();
con.setUseCaches(false);
con.setDoOutput(true);
con.setDoInput(true);
ByteArrayOutputStream byteout=new ByteArrayOutputStream();
DataOutputStream out=new DataOutputStream(byteout);
out.writeUTF("第一步");
out.flush();
byte buf[]=byteout.toByteArray();
con.setRequestProperty("Content-type","application/octet-stream");
con.setRequestProperty("Content-length",""+buf.length);
DataOutputStream dataout=new DataOutputStream(con.getOutputStream());
dataout.write(buf);
dataout.flush();
dataout.close();
out.close();
byteout.close();
}
catch(IOException e)
{
System.out.println("OUTPUT ERROR:"+e);
}
try
{
//从server接收消息
DataInputStream in=new DataInputStream(con.getInputStream());
vctFromServ.clear();
String strInput;
while((strInput=in.readUTF())!=null)
{
vctFromServ.add(strInput);
}
in.close();
}
catch(IOException e)
{
System.out.println("INPUT Error " + e);
}
}
else
{
strOutput="第二步";
try
{
System.out.println("Before Step2 connection!");
url=new URL("http://localhost/PostServer");
con=url.openConnection();
con.setUseCaches(false);
con.setDoOutput(true);
con.setDoInput(true);
ByteArrayOutputStream byteout=new ByteArrayOutputStream();
DataOutputStream out=new DataOutputStream(byteout);
out.writeUTF("第二步");
out.flush();
byte buf[]=byteout.toByteArray();
con.setRequestProperty("Content-type","application/octet-stream");
con.setRequestProperty("Content-length",""+buf.length);
DataOutputStream dataout=new DataOutputStream(con.getOutputStream());
dataout.write(buf);
dataout.flush();
dataout.close();
DataInputStream in=new DataInputStream(con.getInputStream());
vctFromServ.clear();
String strInput;
while((strInput=in.readUTF())!=null)
{
vctFromServ.add(strInput);
}
}
catch(IOException e)
{
System.out.println("Error " + e);
}
}
repaint();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawString(strOutput,200,200);
int tmpX=200;
int tmpY=250;
for(int i=0;i<vctFromServ.size();i++)
{
g.drawString((String)vctFromServ.elementAt(i),tmpX,tmpY);
tmpY+=50;
}
}
private String strOutput;
private Vector vctFromServ=new Vector();
private JButton cmdStep1;
private JButton cmdStep2;
private URL url;
private URLConnection con;
} public class PostClient extends JApplet
{ public void init()
{ Container contentPane = getContentPane();
contentPane.add(new PostClientPanel());
}
}
/**
* version 1.00 1999-08-27
* author Cay Horstmann
*/import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;public class PostServer extends HttpServlet
{
public void service(HttpServletRequest req,HttpServletResponse resp)
{
try
{
//接收从客户端发来的数据
DataInputStream in=new DataInputStream(req.getInputStream());
strChoice=in.readUTF().trim();
System.out.println("strChoice="+strChoice);
in.close();
//向客户端发送数据
resp.setContentType("application/octet-stream");
byteout=new ByteArrayOutputStream();
out=new DataOutputStream(byteout);
if(strChoice.equals("第一步"))
{
out.writeUTF("第一步回复1!");
out.writeUTF("第一步回复2!");
}
else if(strChoice.equals("第二步"))
{
out.writeUTF("第二步回复1!");
out.writeUTF("第二步回复2!");
out.writeUTF("第二步回复3!");
out.writeUTF("第二步回复4!");
}
out.flush();
buf=byteout.toByteArray();
resp.setContentLength(buf.length);
servletout=resp.getOutputStream();
servletout.write(buf);
servletout.close();
byteout.close();
out.close();
}
catch(IOException ex)
{
System.out.println("out3 ERROR:"+ex);
}
}
private String strChoice;
private byte[] buf;
private ServletOutputStream servletout;
private ByteArrayOutputStream byteout;
private DataOutputStream out;}
out.close();变一下顺序,out.close()应该在前面
照作了但还是有相同违例被掷出
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;public class PostServer extends HttpServlet
{
public void service(HttpServletRequest req,HttpServletResponse resp)
{
try
{
//接收从客户端发来的数据
DataInputStream in=new DataInputStream(req.getInputStream());
strChoice=in.readUTF().trim();
System.out.println("strChoice="+strChoice);
in.close();//向客户端发送数据
resp.setContentType("application/octet-stream");
byteout=new ByteArrayOutputStream();
out=new DataOutputStream(byteout);
if(strChoice.equals("第一步"))
{
out.writeUTF("第一步回复1!");
out.writeUTF("第一步回复2!");
}
else if(strChoice.equals("第二步"))
{
out.writeUTF("第二步回复1!");
out.writeUTF("第二步回复2!");
out.writeUTF("第二步回复3!");
out.writeUTF("第二步回复4!");
}
out.flush();buf=byteout.toByteArray();
resp.setContentLength(buf.length);
servletout=resp.getOutputStream();
servletout.write(buf);
}
catch(IOException ex)
{
System.out.println("out3 ERROR:"+ex);
}}
public void destroy(){
try{
servletout.close();
byteout.close();
out.close();
}catch(Exception e){System.out.println(e);}private String strChoice;
private byte[] buf;
private ServletOutputStream servletout;
private ByteArrayOutputStream byteout;
private DataOutputStream out;}
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;public class PostServer extends HttpServlet
{
public void service(HttpServletRequest req,HttpServletResponse resp)
{
try
{
//接收从客户端发来的数据
DataInputStream in=new DataInputStream(req.getInputStream());
strChoice=in.readUTF().trim();
System.out.println("strChoice="+strChoice);
//向客户端发送数据
resp.setContentType("application/octet-stream");
byteout=new ByteArrayOutputStream();
out=new DataOutputStream(byteout);
if(strChoice.equals("第一步"))
{
out.writeUTF("第一步回复1!");
out.writeUTF("第一步回复2!");
}
else if(strChoice.equals("第二步"))
{
out.writeUTF("第二步回复1!");
out.writeUTF("第二步回复2!");
out.writeUTF("第二步回复3!");
out.writeUTF("第二步回复4!");
}
out.flush();buf=byteout.toByteArray();
resp.setContentLength(buf.length);
servletout=resp.getOutputStream();
servletout.write(buf);
}
catch(IOException ex)
{
System.out.println("out3 ERROR:"+ex);
}}
public void destroy(){
try{
in.close();
servletout.close();
byteout.close();
out.close();
}catch(Exception e){System.out.println(e);}private String strChoice;
private byte[] buf;
private ServletOutputStream servletout;
private ByteArrayOutputStream byteout;
private DataOutputStream out;}
谢谢用你的方法问题解决了,给分