这是Client端。
import java.awt.*;
import java.io.*;
import java.awt.event.*;
import java.io.IOException;
import java.net.*;public class Client extends Frame {
TextField tf = new TextField();
TextArea ta = new TextArea();
Socket s = null;
DataOutputStream dos = null;
public void luanchFrame() {
this.setSize(500, 300);
this.setResizable(false);
this.add(ta, BorderLayout.NORTH);
this.add(tf, BorderLayout.SOUTH);
this.setVisible(true);
tf.addActionListener(new TfListener());
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
disConnect();
System.exit(0);
}
});
}
public static void main(String[] args) {
Client c = new Client();
c.luanchFrame();
c.connectToServer();
}
public void disConnect() {
try {
dos.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void connectToServer() {
try {
s = new Socket("127.0.0.1", 8888);
dos = new DataOutputStream(s.getOutputStream());
System.out.println("connect");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public class TfListener implements ActionListener { public void actionPerformed(ActionEvent e) {
String tfString = tf.getText();
ta.setText(ta.getText() + tfString + '\n');
tf.setText("");
try {
dos.writeUTF(tfString);
dos.flush();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}这是Server端。import java.io.IOException;
import java.io.*;
import java.net.*;public class Server {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8888);
Socket s = ss.accept();
System.out.println("connect to server");
DataInputStream dis = new DataInputStream(s.getInputStream());
String str = dis.readUTF();
System.out.println(str);
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在Client端每当输入超过两条语句以后在CLient端就会报错具体内容如下!!!java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at java.io.DataOutputStream.write(DataOutputStream.java:90)
at java.io.DataOutputStream.writeUTF(DataOutputStream.java:384)
at java.io.DataOutputStream.writeUTF(DataOutputStream.java:306)
at Client$TfListener.actionPerformed(Client.java:63)
at java.awt.TextField.processActionEvent(TextField.java:596)
at java.awt.TextField.processEvent(TextField.java:564)
at java.awt.Component.dispatchEventImpl(Component.java:4501)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
import java.awt.*;
import java.io.*;
import java.awt.event.*;
import java.io.IOException;
import java.net.*;public class Client extends Frame {
TextField tf = new TextField();
TextArea ta = new TextArea();
Socket s = null;
DataOutputStream dos = null;
public void luanchFrame() {
this.setSize(500, 300);
this.setResizable(false);
this.add(ta, BorderLayout.NORTH);
this.add(tf, BorderLayout.SOUTH);
this.setVisible(true);
tf.addActionListener(new TfListener());
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
disConnect();
System.exit(0);
}
});
}
public static void main(String[] args) {
Client c = new Client();
c.luanchFrame();
c.connectToServer();
}
public void disConnect() {
try {
dos.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void connectToServer() {
try {
s = new Socket("127.0.0.1", 8888);
dos = new DataOutputStream(s.getOutputStream());
System.out.println("connect");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public class TfListener implements ActionListener { public void actionPerformed(ActionEvent e) {
String tfString = tf.getText();
ta.setText(ta.getText() + tfString + '\n');
tf.setText("");
try {
dos.writeUTF(tfString);
dos.flush();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}这是Server端。import java.io.IOException;
import java.io.*;
import java.net.*;public class Server {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8888);
Socket s = ss.accept();
System.out.println("connect to server");
DataInputStream dis = new DataInputStream(s.getInputStream());
String str = dis.readUTF();
System.out.println(str);
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在Client端每当输入超过两条语句以后在CLient端就会报错具体内容如下!!!java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at java.io.DataOutputStream.write(DataOutputStream.java:90)
at java.io.DataOutputStream.writeUTF(DataOutputStream.java:384)
at java.io.DataOutputStream.writeUTF(DataOutputStream.java:306)
at Client$TfListener.actionPerformed(Client.java:63)
at java.awt.TextField.processActionEvent(TextField.java:596)
at java.awt.TextField.processEvent(TextField.java:564)
at java.awt.Component.dispatchEventImpl(Component.java:4501)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
{
while(true)
{
Soceket s= ss.accept();
DataInputStream dis = new DataInputStream(s.getInputStream());
String str = dis.readUTF();
System.out.println(str);
dis.close();
}}
catch(Exception e){}
还有ServerSocket ss.close()
ServerSocket ss = new ServerSocket(8888);
Socket s = ss.accept();
System.out.println("connect to server");
DataInputStream dis = new DataInputStream(s.getInputStream());
String str = null;
while((str = dis.readUTF())!=null){
System.out.println(str);
}
dis.close();
Socket s = ss.accept();
System.out.println("connect to server");
DataInputStream dis = new DataInputStream(s.getInputStream());
String str = null;
while(true){
if((str = dis.readUTF())!=null)
System.out.println(str);
}
dis.close();