server端
package socketcs;import java.awt.BorderLayout;
import java.io.*;
import java.net.*;
import java.awt.event.*;
import java.lang.*;
import javax.swing.*;
public class serversk extends JFrame
{
JLabel title=new JLabel("服务器监视登录");
javax.swing.JScrollPane jsp;
public static javax.swing.JTextArea jta1;
public serversk()
{
this.setLayout(new BorderLayout());
jsp=new JScrollPane();
jta1=new JTextArea();
jta1.setSize(640,480);
jsp.setViewportView(jta1);
jta1.setVisible(true);
this.getContentPane().add(title,BorderLayout.NORTH);
title.setVisible(true);
this.getContentPane().add(jsp,BorderLayout.CENTER);
}
public static void main(String[] args)
{
serversk sk=new serversk();
sk.setSize(800,600);
sk.setVisible(true);
try{
ServerSocket ss=new ServerSocket(9516);
Socket s=ss.accept();
inout ios=new inout(s);
new Thread(ios).start();
}
catch(Exception e)
{
e.printStackTrace();
}
sk.setDefaultCloseOperation(sk.EXIT_ON_CLOSE);
}
}class inout implements Runnable
{
Socket iosocket=null;
java.io.BufferedReader br=null;
java.io.BufferedWriter bw=null;
public inout(Socket ss)
{
this.iosocket=ss;
} public void run() {
try
{
bw=new BufferedWriter(new java.io.OutputStreamWriter(iosocket.getOutputStream()));
br=new BufferedReader(new java.io.InputStreamReader(iosocket.getInputStream()));
if(true)
{
String gets=br.readLine();
serversk.jta1.append(gets);
}
bw.write("收到");
bw.flush();
bw.close();
br.close();
this.iosocket.close();
}
catch(Exception ex)
{
}
}
}
client端
package h;
import java.io.*;
import java.net.*;
import javax.swing.*;public class cinout extends javax.swing.JFrame {
java.net.Socket c=new Socket();
java.net.SocketAddress link_sa=null;
BufferedWriter cout=null;
BufferedReader cin=null;
String link_sports="9516";
String link_server_ip=null;
boolean flag=false;
public cinout() {
initComponents();
}
private void initComponents() {
//介面代码略
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
if(cjtf1.getText().length()>0)
{
if(flag==false)
{
link_server_ip=java.net.InetAddress.getByName("www.abc.net").getHostAddress().toString();
link_sa=new java.net.InetSocketAddress(link_server_ip,java.lang.Integer.parseInt(link_sports));
c.connect(link_sa);
flag=true;
}
cin=new BufferedReader(new java.io.InputStreamReader(c.getInputStream()));
cout=new BufferedWriter(new java.io.OutputStreamWriter(c.getOutputStream()));
cout.write(cjtf1.getText()+"\n");
cout.flush();
if(true)
{
String appstr=cin.readLine();
cjta1.append(appstr);
}
cout.close();
cin.close();
c.close();
}
else
{
cjtf1.setText("请输入信息");
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new cinout().setVisible(true);
}
});
}
// 变量声明 - 不进行修改
private javax.swing.JTextArea cjta1;
private javax.swing.JTextField cjtf1;
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
// 变量声明结束
}客户端第二次按下按钮后,报错如下:
java.net.SocketException: Socket is closed
at java.net.Socket.getInputStream(Socket.java:753)
at hhchat.cinout.jButton1ActionPerformed(cinout.java:104)
at hhchat.cinout.access$000(cinout.java:15)
at hhchat.cinout$1.actionPerformed(cinout.java:50)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1766)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
package socketcs;import java.awt.BorderLayout;
import java.io.*;
import java.net.*;
import java.awt.event.*;
import java.lang.*;
import javax.swing.*;
public class serversk extends JFrame
{
JLabel title=new JLabel("服务器监视登录");
javax.swing.JScrollPane jsp;
public static javax.swing.JTextArea jta1;
public serversk()
{
this.setLayout(new BorderLayout());
jsp=new JScrollPane();
jta1=new JTextArea();
jta1.setSize(640,480);
jsp.setViewportView(jta1);
jta1.setVisible(true);
this.getContentPane().add(title,BorderLayout.NORTH);
title.setVisible(true);
this.getContentPane().add(jsp,BorderLayout.CENTER);
}
public static void main(String[] args)
{
serversk sk=new serversk();
sk.setSize(800,600);
sk.setVisible(true);
try{
ServerSocket ss=new ServerSocket(9516);
Socket s=ss.accept();
inout ios=new inout(s);
new Thread(ios).start();
}
catch(Exception e)
{
e.printStackTrace();
}
sk.setDefaultCloseOperation(sk.EXIT_ON_CLOSE);
}
}class inout implements Runnable
{
Socket iosocket=null;
java.io.BufferedReader br=null;
java.io.BufferedWriter bw=null;
public inout(Socket ss)
{
this.iosocket=ss;
} public void run() {
try
{
bw=new BufferedWriter(new java.io.OutputStreamWriter(iosocket.getOutputStream()));
br=new BufferedReader(new java.io.InputStreamReader(iosocket.getInputStream()));
if(true)
{
String gets=br.readLine();
serversk.jta1.append(gets);
}
bw.write("收到");
bw.flush();
bw.close();
br.close();
this.iosocket.close();
}
catch(Exception ex)
{
}
}
}
client端
package h;
import java.io.*;
import java.net.*;
import javax.swing.*;public class cinout extends javax.swing.JFrame {
java.net.Socket c=new Socket();
java.net.SocketAddress link_sa=null;
BufferedWriter cout=null;
BufferedReader cin=null;
String link_sports="9516";
String link_server_ip=null;
boolean flag=false;
public cinout() {
initComponents();
}
private void initComponents() {
//介面代码略
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
if(cjtf1.getText().length()>0)
{
if(flag==false)
{
link_server_ip=java.net.InetAddress.getByName("www.abc.net").getHostAddress().toString();
link_sa=new java.net.InetSocketAddress(link_server_ip,java.lang.Integer.parseInt(link_sports));
c.connect(link_sa);
flag=true;
}
cin=new BufferedReader(new java.io.InputStreamReader(c.getInputStream()));
cout=new BufferedWriter(new java.io.OutputStreamWriter(c.getOutputStream()));
cout.write(cjtf1.getText()+"\n");
cout.flush();
if(true)
{
String appstr=cin.readLine();
cjta1.append(appstr);
}
cout.close();
cin.close();
c.close();
}
else
{
cjtf1.setText("请输入信息");
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new cinout().setVisible(true);
}
});
}
// 变量声明 - 不进行修改
private javax.swing.JTextArea cjta1;
private javax.swing.JTextField cjtf1;
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
// 变量声明结束
}客户端第二次按下按钮后,报错如下:
java.net.SocketException: Socket is closed
at java.net.Socket.getInputStream(Socket.java:753)
at hhchat.cinout.jButton1ActionPerformed(cinout.java:104)
at hhchat.cinout.access$000(cinout.java:15)
at hhchat.cinout$1.actionPerformed(cinout.java:50)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1766)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
楼主【cqandy】截止到2008-07-30 18:19:59的历史汇总数据(不包括此帖):
发帖的总数量:17 发帖的总分数:650 每贴平均分数:38
回帖的总数量:16 得分贴总数量:1 回帖的得分率:6%
结贴的总数量:15 结贴的总分数:500
无满意结贴数:1 无满意结贴分:50
未结的帖子数:2 未结的总分数:150
结贴的百分比:88.24 % 结分的百分比:76.92 %
无满意结贴率:6.67 % 无满意结分率:10.00 %
楼主加油
取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=cqandy
不是被你关掉了吗
try{
ServerSocket ss=new ServerSocket(9516);
Socket s=ss.accept();
inout ios=new inout(s);
new Thread(ios).start();
}
catch(Exception e)
{
e.printStackTrace();
} 应该是这样:
public void run() {
while(true){
try{
ServerSocket ss=new ServerSocket(9516);
Socket s=ss.accept();
inout ios=new inout(s);
new Thread(ios).start();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:336)
at sun.nio.cs.StreamEncoder$CharsetSE.implFlushBuffer(StreamEncoder.java:404)
at sun.nio.cs.StreamEncoder$CharsetSE.implFlush(StreamEncoder.java:408)
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:152)
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)
at java.io.BufferedWriter.flush(BufferedWriter.java:236)
at hhchat.cinout.jButton1ActionPerformed(cinout.java:107)
at hhchat.cinout.access$000(cinout.java:15)
at hhchat.cinout$1.actionPerformed(cinout.java:50)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1766)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
package socketcs;import java.awt.BorderLayout;
import java.io.*;
import java.net.*;
import java.awt.event.*;
import java.lang.*;
import javax.swing.*;
public class serversk extends JFrame implements Runnable
{
JLabel title=new JLabel("服务器监视登录");
javax.swing.JScrollPane jsp;
public static javax.swing.JTextArea jta1;
public serversk()
{
this.setLayout(new BorderLayout());
jsp=new JScrollPane();
jta1=new JTextArea();
jta1.setSize(640,480);
jsp.setViewportView(jta1);
jta1.setVisible(true);
this.getContentPane().add(title,BorderLayout.NORTH);
title.setVisible(true);
this.getContentPane().add(jsp,BorderLayout.CENTER);
}
public static void main(String[] args)
{
serversk sk=new serversk();
sk.setSize(800,600);
sk.setVisible(true);
sk.run();
//sk.setDefaultCloseOperation(sk.EXIT_ON_CLOSE);
} public void run() {
while(true)
{
try{
ServerSocket ss=new ServerSocket(9517);
Socket s=null;
s=ss.accept();
inout ios=new inout(s);
new Thread(ios).start();
}
catch(Exception e)
{
}
}
}
}class inout implements Runnable
{
Socket iosocket=null;
java.io.BufferedReader br=null;
java.io.BufferedWriter bw=null;
public inout(Socket ss)
{
this.iosocket=ss;
} public void run() {
try
{
bw=new BufferedWriter(new java.io.OutputStreamWriter(iosocket.getOutputStream()));
br=new BufferedReader(new java.io.InputStreamReader(iosocket.getInputStream()));
if(true)
{
String gets=br.readLine();
serversk.jta1.append(gets);
}
bw.write("收到");
bw.flush();
bw.close();
br.close();
this.iosocket.close();
}
catch(Exception ex)
{
}
}
}
package h;
import java.io.*;
import java.net.*;
import javax.swing.*;
/**
*
* @author Administrator
*/
public class cinout extends javax.swing.JFrame {
/** Creates new form cinout */
java.net.Socket c=new Socket();
java.net.SocketAddress link_sa=null;
BufferedWriter cout=null;
BufferedReader cin=null;
String link_sports="9517";
String link_server_ip=null;
boolean flag=false;
public cinout() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
cjtf1 = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
cjta1 = new javax.swing.JTextArea(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("\u5185\u5bb9:"); jButton1.setText("\u53d1\u9001");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
}); cjta1.setColumns(20);
cjta1.setRows(5);
jScrollPane1.setViewportView(cjta1); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
.add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup()
.add(30, 30, 30)
.add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 325, Short.MAX_VALUE))
.add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup()
.addContainerGap()
.add(jLabel1)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(cjtf1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 248, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jButton1)))
.addContainerGap(45, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 242, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 15, Short.MAX_VALUE)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel1)
.add(cjtf1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(jButton1))
.addContainerGap())
);
pack();
}// </editor-fold> private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO 将在此处添加您的处理代码:
try{
if(cjtf1.getText().length()>0)
{
if(flag==false)
{
link_server_ip=java.net.InetAddress.getByName("www.abc.net").getHostAddress().toString();
link_sa=new java.net.InetSocketAddress(link_server_ip,java.lang.Integer.parseInt(link_sports));
c.connect(link_sa);
flag=true;
}
cin=new BufferedReader(new java.io.InputStreamReader(c.getInputStream()));
cout=new BufferedWriter(new java.io.OutputStreamWriter(c.getOutputStream()));
cout.write(cjtf1.getText()+"\n");
cout.flush();
if(true)
{
String appstr=cin.readLine();
cjta1.append(appstr);
}
//cout.close();
//cin.close();
//c.close();
flag=false;
}
else
{
cjtf1.setText("请输入信息");
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new cinout().setVisible(true);
}
});
}
// 变量声明 - 不进行修改
private javax.swing.JTextArea cjta1;
private javax.swing.JTextField cjtf1;
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
// 变量声明结束
}
jLabel1 = new javax.swing.JLabel();
cjtf1 = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
cjta1 = new javax.swing.JTextArea(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("\u5185\u5bb9:"); jButton1.setText("\u53d1\u9001");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
你的客户端类第一句java.net.Socket c=new Socket(); 这样在初始化对象的时候创建了c是一个Socket
第一次点的时候用c.connect连接了,第二次点还是这个对象,再用c.connect就不行了
或者报错说连接已经存在(如果你没close),或者说连接已经reset了(如果你close了连接)
你应该在c.connect前重新new 一下c这个Socket。而且这个变量好像是函数内变量就可以了,不需要做类变量的。