服务方:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.event.AncestorListener;
import java.io.*;
import java.net.*;public class server {
private JTextArea recevieArea;
private JTextArea sentArea;
private JButton submitbutton;
private static ServerSocket serverSocket;
private static Socket socket;
private BufferedReader br;
private DataOutputStream dos;
private DataInputStream dis;
private String s = ""; public server() {
} class frame extends JFrame {
public frame() {
setResizable(false);
setVisible(true);
this.setBounds(300, 200, 350, 300);
this.setTitle("Server");
panel p = new panel();
Container c = getContentPane();
setDefaultCloseOperation(EXIT_ON_CLOSE);
c.add(p);
show();
repaint(); }
} class panel extends JPanel {
public panel() { this.setBorder(null); submitbutton = new JButton("sent");
submitbutton.setBounds(236, 200, 66, 35);
add(submitbutton);
setLayout(null);
submitbutton.addActionListener(new lis()); final JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 10, 220, 99);
add(scrollPane); recevieArea = new JTextArea(5, 20);
scrollPane.setViewportView(recevieArea);
recevieArea.setLineWrap(true); final JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setBounds(10, 134, 220, 101);
add(scrollPane_1); sentArea = new JTextArea(5, 20);
scrollPane_1.setViewportView(sentArea);
sentArea.setLineWrap(true);
}
}class lis implements ActionListener { public void actionPerformed(ActionEvent e) {
if(e.getSource()==submitbutton){
try{
dos = new DataOutputStream(socket.getOutputStream());
s = sentArea.getText();
recevieArea.append(s+"\n");
sentArea.setText("");
socket.getOutputStream();
}catch(Exception ee){
System.out.print(ee.getMessage());
}
}
}
} public static void main(String args[]) throws Exception {
new server().new frame();
// while(true){
try {
serverSocket = new ServerSocket(5678);
socket = serverSocket.accept();
System.out.print("linked!");
}catch (Exception ee) {
System.out.print(ee.getMessage());
}
// }
}
}
客户端:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.event.AncestorListener;
import java.io.*;
import java.net.*;public class client {
private JTextArea recevieArea;
private JTextArea sentArea;
private JButton submitbutton;
private static Socket socket;
private PrintWriter pw;
static DataInputStream is;
DataOutputStream dos;
private String s="";
public client(){
}
class frame extends JFrame{
public frame(){
setResizable(false);
setVisible(true);
this.setBounds(300,200,350,300);
this.setTitle("Client");
panel p = new panel();
Container c = getContentPane();
setDefaultCloseOperation(EXIT_ON_CLOSE);
c.add(p);
show();
repaint();
}
} class lis implements ActionListener { public void actionPerformed(ActionEvent e) {
if(e.getSource()==submitbutton){
try{
dos = new DataOutputStream(socket.getOutputStream());
s = sentArea.getText();
recevieArea.append(s+"\n");
sentArea.setText("");
socket.getOutputStream();
}catch(Exception ee){
System.out.print(ee.getMessage());
}
}
}
}
class panel extends JPanel{
public panel(){
this.setBorder(null);
submitbutton = new JButton("sent");
submitbutton.setBounds(236, 200, 66, 35);
add(submitbutton);
submitbutton.addActionListener(new lis());
setLayout(null); final JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 10, 220, 99);
add(scrollPane);
recevieArea = new JTextArea(5,20);
scrollPane.setViewportView(recevieArea);
recevieArea.setLineWrap(true);
final JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setBounds(10, 134, 220, 101);
add(scrollPane_1);
sentArea = new JTextArea(5,20);
scrollPane_1.setViewportView(sentArea);
sentArea.setLineWrap(true);
}
} public static void main(String args []){
new client().new frame();
try{
socket = new Socket("127.0.0.1",5678);
System.out.print("linked!");
is = new DataInputStream(socket.getInputStream());
}catch(Exception e){
}
}
}
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.event.AncestorListener;
import java.io.*;
import java.net.*;public class server {
private JTextArea recevieArea;
private JTextArea sentArea;
private JButton submitbutton;
private static ServerSocket serverSocket;
private static Socket socket;
private BufferedReader br;
private DataOutputStream dos;
private DataInputStream dis;
private String s = ""; public server() {
} class frame extends JFrame {
public frame() {
setResizable(false);
setVisible(true);
this.setBounds(300, 200, 350, 300);
this.setTitle("Server");
panel p = new panel();
Container c = getContentPane();
setDefaultCloseOperation(EXIT_ON_CLOSE);
c.add(p);
show();
repaint(); }
} class panel extends JPanel {
public panel() { this.setBorder(null); submitbutton = new JButton("sent");
submitbutton.setBounds(236, 200, 66, 35);
add(submitbutton);
setLayout(null);
submitbutton.addActionListener(new lis()); final JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 10, 220, 99);
add(scrollPane); recevieArea = new JTextArea(5, 20);
scrollPane.setViewportView(recevieArea);
recevieArea.setLineWrap(true); final JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setBounds(10, 134, 220, 101);
add(scrollPane_1); sentArea = new JTextArea(5, 20);
scrollPane_1.setViewportView(sentArea);
sentArea.setLineWrap(true);
}
}class lis implements ActionListener { public void actionPerformed(ActionEvent e) {
if(e.getSource()==submitbutton){
try{
dos = new DataOutputStream(socket.getOutputStream());
s = sentArea.getText();
recevieArea.append(s+"\n");
sentArea.setText("");
socket.getOutputStream();
}catch(Exception ee){
System.out.print(ee.getMessage());
}
}
}
} public static void main(String args[]) throws Exception {
new server().new frame();
// while(true){
try {
serverSocket = new ServerSocket(5678);
socket = serverSocket.accept();
System.out.print("linked!");
}catch (Exception ee) {
System.out.print(ee.getMessage());
}
// }
}
}
客户端:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.event.AncestorListener;
import java.io.*;
import java.net.*;public class client {
private JTextArea recevieArea;
private JTextArea sentArea;
private JButton submitbutton;
private static Socket socket;
private PrintWriter pw;
static DataInputStream is;
DataOutputStream dos;
private String s="";
public client(){
}
class frame extends JFrame{
public frame(){
setResizable(false);
setVisible(true);
this.setBounds(300,200,350,300);
this.setTitle("Client");
panel p = new panel();
Container c = getContentPane();
setDefaultCloseOperation(EXIT_ON_CLOSE);
c.add(p);
show();
repaint();
}
} class lis implements ActionListener { public void actionPerformed(ActionEvent e) {
if(e.getSource()==submitbutton){
try{
dos = new DataOutputStream(socket.getOutputStream());
s = sentArea.getText();
recevieArea.append(s+"\n");
sentArea.setText("");
socket.getOutputStream();
}catch(Exception ee){
System.out.print(ee.getMessage());
}
}
}
}
class panel extends JPanel{
public panel(){
this.setBorder(null);
submitbutton = new JButton("sent");
submitbutton.setBounds(236, 200, 66, 35);
add(submitbutton);
submitbutton.addActionListener(new lis());
setLayout(null); final JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 10, 220, 99);
add(scrollPane);
recevieArea = new JTextArea(5,20);
scrollPane.setViewportView(recevieArea);
recevieArea.setLineWrap(true);
final JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setBounds(10, 134, 220, 101);
add(scrollPane_1);
sentArea = new JTextArea(5,20);
scrollPane_1.setViewportView(sentArea);
sentArea.setLineWrap(true);
}
} public static void main(String args []){
new client().new frame();
try{
socket = new Socket("127.0.0.1",5678);
System.out.print("linked!");
is = new DataInputStream(socket.getInputStream());
}catch(Exception e){
}
}
}
解决方案 »
- 求救!!生成javadoc出错,期待高手
- 求电子商务网站(源码)
- 求问:Java中static变量有什么作用?一般用在什么场合?
- 想做一个象Window文件目录浏览器(explorer)显示详细信息一样的界面,用什么?
- javascript小问题
- 菜鸟问
- 在jsp头设置word页面,有些电脑可以,但有一台电脑报错..
- 求助关于HashTable的问题?
- 我用<OBJECT>替换了<APPLET>标签,但是<object....<param name="code" value="*****.class">...其中name,value到底填什么?我间了好几个人都说的不完全正确!请高手指点一下。
- jdbc链接oracle,查询数据时出错
- 求救:RMI 聊天室中不能更新远程client中的JTextArea中的值
- 如果用swing可以开发出c/s 模式的gui话,那么用什么做安装盘呢?
但没有处理连接断开的问题.
serverpackage D21.M2.Y2008;import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;public class Server2 extends Frame{
DataInputStream dis;
DataOutputStream dos;
ServerSocket ss;
Socket s;
TextArea ta = new TextArea();
ArrayList<Socket> al = new ArrayList<Socket>();
public Server2() {
super("Server");
add(ta);
setSize(200, 200);
setVisible(true);
pack();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
try {
ss = new ServerSocket(5555);
} catch (IOException e1) {
e1.printStackTrace();
}
connection();
}
private void connection() {
while(true) {
try {
s = ss.accept();
al.add(s);
new Thread(new serverThread(al)).start();
} catch (IOException e) {
e.printStackTrace();
}
}
} public static void main(String[] args) {
Server2 s = new Server2();
} class serverThread implements Runnable {
Socket s;
ArrayList<Socket> al;
serverThread(ArrayList<Socket> al) {
this.al = al;
}
public void run() {
while(true) {
try {
for (int i=0; i<al.size(); i++) {
s = al.get(i);
dos = new DataOutputStream(s.getOutputStream());
dos.writeUTF("send a message" + new Date());
ta.append("a message is sended\n");
}
Thread.sleep(1000);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}}client
package D21.M2.Y2008;import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;import javax.swing.*;
import javax.swing.text.BadLocationException;
import javax.swing.text.StyledDocument;public class Client extends JFrame implements Runnable, ActionListener {
DataInputStream dis;
DataOutputStream dos;
StyledDocument doc;
Socket s;
JTextPane jtp = new JTextPane();
JScrollPane jsp = new JScrollPane(jtp);
TextArea ta = new TextArea();
Button b1 = new Button("弹出");
Client() {
super("Client");
doc = jtp.getStyledDocument();
setSize(400, 200);
add(jsp, BorderLayout.CENTER);
add(b1, BorderLayout.SOUTH);
b1.addActionListener(this);
jsp.setForeground(Color.RED);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setVisible(true);
connection();
}
private void connection() {
try {
s = new Socket("127.0.0.1", 5555);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} public static void main(String[] args) {
new Thread(new Client()).start();
} public void run() {
while(true) {
try {
dis = new DataInputStream(s.getInputStream());
String str = dis.readUTF();
try {
int nowPositon = doc.getLength();
doc.insertString(nowPositon, str + "\n", null);
// this.jtp.setCaretPosition(this.jtp.getText().length());
this.jtp.setCaretPosition(jtp.getDocument().getLength());
} catch (BadLocationException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
} public void actionPerformed(ActionEvent e) {
if (e.getSource() == b1) {
new TestDialog(this);
}
}
class TestDialog extends Dialog implements ActionListener {
Button b1 = new Button("关闭");
TestDialog(Frame f) {
super(f, "Dialog", true);
setLocation(f.getX(), f.getY());
setSize(50, 50);
add(new Label("测试是否与对话框有关系"), BorderLayout.CENTER);
add(b1, BorderLayout.SOUTH);
b1.addActionListener(this);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
setVisible(false);
}
});
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == b1) {
setVisible(false);
}
}
}}
然后在客户端也没有用readUIF()方法读取
比如:
String a=new String(dos.readUIF());
System.out.println(a);
要互相通信
客户端要建立输入流和输出流
服务段也要建立输入流和输出流
服务端import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.event.AncestorListener;
import java.io.*;
import java.net.*;public class server {
private JTextArea recevieArea;
private JTextArea sentArea;
private JButton submitbutton;
private static ServerSocket serverSocket;
private static Socket socket;
private static DataOutputStream dos;
private static DataInputStream dis;
private static String s = "";
private static String disstr = "";
public server() {
} class frame extends JFrame {
public frame() {
setResizable(false);
setVisible(true);
this.setBounds(300, 200, 350, 300);
this.setTitle("Server");
panel p = new panel();
Container c = getContentPane();
setDefaultCloseOperation(EXIT_ON_CLOSE);
c.add(p);
show();
repaint(); }
} class panel extends JPanel {
public panel() { this.setBorder(null); submitbutton = new JButton("sent");
submitbutton.setBounds(236, 200, 66, 35);
add(submitbutton);
setLayout(null);
submitbutton.addActionListener(new lis()); final JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 10, 220, 99);
add(scrollPane); recevieArea = new JTextArea(5, 20);
scrollPane.setViewportView(recevieArea);
recevieArea.setLineWrap(true);
recevieArea.append(disstr);
final JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setBounds(10, 134, 220, 101);
add(scrollPane_1); sentArea = new JTextArea(5, 20);
scrollPane_1.setViewportView(sentArea);
sentArea.setLineWrap(true);
}
}class lis implements ActionListener { public void actionPerformed(ActionEvent e) {
if(e.getSource()==submitbutton){
try{
dos = new DataOutputStream(socket.getOutputStream());
s = sentArea.getText();
recevieArea.append(s+"\n");
sentArea.setText("");
dos.writeUTF(s);
socket.getOutputStream();
}catch(Exception ee){
System.out.print(ee.getMessage());
}
}
}
} public static void main(String args[]) throws Exception {
new server().new frame();
// while(true){
try {
serverSocket = new ServerSocket(5678);
socket = serverSocket.accept();
System.out.print("linked!");
System.out.print(socket.getInputStream());
dis = new DataInputStream(socket.getInputStream());
disstr = dis.readUTF();
System.out.println(disstr);
System.out.println(dos);
}catch (Exception ee) {
System.out.print(ee.getMessage());
}
// }
}
}客户端:import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.event.AncestorListener;
import java.io.*;
import java.net.*;public class client {
private JTextArea recevieArea;
private JTextArea sentArea;
private JButton submitbutton;
private static Socket socket;
static DataInputStream is;
static DataOutputStream dos;
private String s="";
private static DataInputStream dis;
private static String disstr = "";
public client(){
}
class frame extends JFrame{
public frame(){
setResizable(false);
setVisible(true);
this.setBounds(300,200,350,300);
this.setTitle("Client");
panel p = new panel();
Container c = getContentPane();
setDefaultCloseOperation(EXIT_ON_CLOSE);
c.add(p);
show();
repaint();
}
} class lis implements ActionListener { public void actionPerformed(ActionEvent e) {
if(e.getSource()==submitbutton){
try{
dos = new DataOutputStream(socket.getOutputStream());
s = sentArea.getText();
recevieArea.append(s+"\n");
sentArea.setText("");
socket.getOutputStream();
dos.writeUTF(s);
}catch(Exception ee){
System.out.print(ee.getMessage());
}
}
}
}
class panel extends JPanel{
public panel(){
this.setBorder(null);
submitbutton = new JButton("sent");
submitbutton.setBounds(236, 200, 66, 35);
add(submitbutton);
submitbutton.addActionListener(new lis());
setLayout(null); final JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 10, 220, 99);
add(scrollPane);
recevieArea = new JTextArea(5,20);
scrollPane.setViewportView(recevieArea);
recevieArea.setLineWrap(true);
recevieArea.append(disstr);
final JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setBounds(10, 134, 220, 101);
add(scrollPane_1);
sentArea = new JTextArea(5,20);
scrollPane_1.setViewportView(sentArea);
sentArea.setLineWrap(true);
}
} public static void main(String args []){
new client().new frame();
try{
socket = new Socket("127.0.0.1",5678);
System.out.print("linked!");
System.out.print(socket.getInputStream());
dis = new DataInputStream(socket.getInputStream());
disstr = dis.readUTF();
System.out.println(disstr);
System.out.println(dos);
}catch(Exception e){
}
}
}
Server端
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;public class Server {
private JTextArea recevieArea;
private JTextArea sentArea;
private JButton submitbutton;
private static ServerSocket serverSocket;
private static Socket socket;
private BufferedReader br;
private DataOutputStream dos;
private DataInputStream dis;
private String s = ""; public Server() {
} class frame extends JFrame {
public frame() {
setResizable(false);
setVisible(true);
this.setBounds(300, 200, 350, 300);
this.setTitle("Server");
panel p = new panel();
Container c = getContentPane();
setDefaultCloseOperation(EXIT_ON_CLOSE);
c.add(p);
setVisible(true); }
} class panel extends JPanel {
public panel() { this.setBorder(null); submitbutton = new JButton("sent");
submitbutton.setBounds(236, 200, 66, 35);
add(submitbutton);
setLayout(null);
submitbutton.addActionListener(new lis()); final JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 10, 220, 99);
add(scrollPane); recevieArea = new JTextArea(5, 20);
scrollPane.setViewportView(recevieArea);
recevieArea.setLineWrap(true); final JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setBounds(10, 134, 220, 101);
add(scrollPane_1); sentArea = new JTextArea(5, 20);
scrollPane_1.setViewportView(sentArea);
sentArea.setLineWrap(true);
}
}class lis implements ActionListener { public void actionPerformed(ActionEvent e) {
if(e.getSource()==submitbutton){
try{
dos = new DataOutputStream(socket.getOutputStream());
dis = new DataInputStream(socket.getInputStream());
dos.writeUTF("返回客户端第一条");
s = sentArea.getText();
recevieArea.append(dis.readUTF()+"\n");
sentArea.setText("");
//socket.getOutputStream();
}catch(Exception ee){
System.out.print(ee.getMessage());
}
}
}
} public static void main(String args[]) throws Exception {
new Server().new frame();
// while(true){
try {
serverSocket = new ServerSocket(5678);
socket = serverSocket.accept();
System.out.print("linked!");
}catch (Exception ee) {
System.out.print(ee.getMessage());
}
// }
}
}Clientimport java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.event.AncestorListener;
import java.io.*;
import java.net.*;
import java.io.DataInputStream;public class Client {
private JTextArea recevieArea;
private JTextArea sentArea;
private JButton submitbutton;
private static Socket socket;
private PrintWriter pw;
static DataInputStream is;
DataOutputStream dos;
DataInputStream dis;
private String s="";
public Client(){
}
class frame extends JFrame{
public frame(){
setResizable(false);
setVisible(true);
this.setBounds(300,200,350,300);
this.setTitle("Client");
panel p = new panel();
Container c = getContentPane();
setDefaultCloseOperation(EXIT_ON_CLOSE);
c.add(p);
show();
repaint();
}
} class lis implements ActionListener { public void actionPerformed(ActionEvent e) {
if(e.getSource()==submitbutton){
try{
dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF("第一条记录发送成功");
dis = new DataInputStream(socket.getInputStream());
s = sentArea.getText();
recevieArea.append(dis.readUTF()+"\n");
sentArea.setText("");
//socket.getOutputStream();
}catch(Exception ee){
System.out.print(ee.getMessage());
}
}
}
}
class panel extends JPanel{
public panel(){
this.setBorder(null);
submitbutton = new JButton("sent");
submitbutton.setBounds(236, 200, 66, 35);
add(submitbutton);
submitbutton.addActionListener(new lis());
setLayout(null); final JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 10, 220, 99);
add(scrollPane);
recevieArea = new JTextArea(5,20);
scrollPane.setViewportView(recevieArea);
recevieArea.setLineWrap(true);
final JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setBounds(10, 134, 220, 101);
add(scrollPane_1);
sentArea = new JTextArea(5,20);
scrollPane_1.setViewportView(sentArea);
sentArea.setLineWrap(true);
}
} public static void main(String args []){
new Client().new frame();
try{
socket = new Socket("127.0.0.1",5678);
System.out.print("linked!");
is = new DataInputStream(socket.getInputStream());
}catch(Exception e){
}
}
}