《java程序设计》实验指导书(完整)

XX学院java实验报告

再打开客户端,单击客户端的“连接服务器”按钮将与服务器建立连接;连接之后,双方在各自图形界面的文本框中填写要发送的信息,然后单击 “Send”按钮,就可以进行通信了。程序运行结果如图1所示。整个程序分成客户端和服务器端两大部分,分别保存成Client.java和Server.java两个文件。

图1 聊天程序运行界面(客户端和服务器端)

1.客户端程序代码:

import java.net.*; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*;

class Client extends JFrame implements ActionListener { Socket sock; //定义套接字对象 JTextArea t1=new JTextArea(); {

41

JTextField t2=new JTextField(20); JButton b1=new JButton(\); JButton b2=new JButton(\连接服务器\);

DataOutputStream out; //定义数据输出流 DataInputStream in; //定义数据输出流 public Client()

this.getContentPane().add(jsp,\); JPanel p1=new JPanel(); p1.add(t2); p1.add(b1); JPanel p2=new JPanel(); p2.add(b2);

this.getContentPane().add(p2,\); this.getContentPane().add(p1,\);

b1.addActionListener(this); b2.addActionListener(this); setTitle(\客户端\); setSize(340,200); setVisible(true); addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e)

setVisible(false); System.exit(0);

{ JScrollPane jsp=new JScrollPane(t1);

XX学院java实验报告

{ {

42

}

}

});

public void actionPerformed(ActionEvent e)

if(e.getSource() == b1){

try { }

out = new DataOutputStream(sock.getOutputStream()); String n = t2.getText(); out.writeUTF(n); t2.setText(\);

// TODO 自动生成 catch 块 e1.printStackTrace();

} catch (IOException e1) {

}

else if(e.getSource()==b2)

try { }

new Communnion(this).start();

sock = new Socket(\,7777); // TODO 自动生成 catch 块 e1.printStackTrace(); // TODO 自动生成 catch 块 e1.printStackTrace();

} catch (UnknownHostException e1) {

} catch (IOException e1) {

XX学院java实验报告

{ }

class Communnion extends Thread { { { { }

}

}

try { } try{

fp.out.close(); //关闭Socket输出流 fp.in.close(); //关闭Socket输入流

fp.in = new DataInputStream(fp.sock.getInputStream()); msg = fp.in.readUTF(); if(msg!=null){ }

// TODO 自动生成 catch 块 e.printStackTrace();

fp.t1.append(msg+\);

String msg=null; while(true) }

public void run()

this.fp=fp; Client fp;

Communnion(Client fp) }

Client mainFrame=new Client(); }

public static void main(String agrs[])

}

} catch (IOException e) {

fp.sock.close(); //关闭Socket }catch(Exception ee){}

2.服务器端代码:

43

XX学院java实验报告

package server;

import java.net.*; import java.io.*; import java.awt.*; import java.awt.event.*;

import javax.swing.*;

class Server extends JFrame implements ActionListener { {

ServerSocket serverSock ; //定义服务器套接字 Socket sock; //定义客户套接字 JTextArea t1=new JTextArea(); JTextField t2=new JTextField(20); JButton b1=new JButton(\);

DataOutputStream out; //定义数据输出流 DataInputStream in; //定义数据输入流 String cname=null;

public Server() throws IOException

serverSock = new ServerSocket(7777); JScrollPane jsp=new JScrollPane(t1); this.getContentPane().add(jsp,\); JPanel p1=new JPanel(); p1.add(t2); p1.add(b1);

this.getContentPane().add(p1,\); b1.addActionListener(this);

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){ }

setVisible(false); System.exit(0);

});

setTitle(\服务器\); setSize(340,200); setVisible(true); try{

sock=serverSock.accept(); //使用accept()阻塞等待客户请求,

44

联系客服:779662525#qq.com(#替换为@)