2020年西安邮电学院 通信软件设计参照模板
- 格式:docx
- 大小:196.35 KB
- 文档页数:8
西安邮电学院实验报告
课程通信软件设计
开课时间至学年第学期
这个软件主要功能是以UDP为基础实现两台电脑之间收发简单文本消息。软件全部使用java编写,并以JavaBuilder8为工具进行编写与调试。布局方式采用NULL方式,主要使用AWT的组件和部分SWING的组件。
使用方法如下:
1 首先在输入IP地址的输入栏中输入想与之进行通信的主机的IP地址,即消息接受方的IP地址。
2 在消息编辑框中输入想发送的消息内容。
3 编辑完欲发送的消息后,点击“发送消息”按钮进行发送;
4 双方发送的消息和发送方与接受方的IP地址都会在下面的空白区域----“频道”内显示。
6 如果没有输入IP地址便发送编辑完的文本消息,空白区域内会显示出提示信息提示用户应输入接受方的IP地址。
7 当频道内显示的消息太多时,可以按”刷新频道”来清除频道内全部信息!
软件运行时候的抓图:
本机测试结果的抓图效果
程序代码与简要说明1 chatFrame类的代码:
package chat;
import .*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
*
Title:
*
Description:
*
Copyright: Copyright (c) 2004
*
Company:
* @author not attributable
* @version 1.0
*/
public class chatFrame extends JFrame {
JPanel contentPane;
Label label1 = new Label();
TextField textField1 = new TextField();
Label label2 = new Label();
TextField textField2 = new TextField();
Button button1 = new Button();
TextArea textArea1 = new TextArea();
DatagramPacket sendpacket,receivepacket; //定义发送和接受数据包DatagramSocket sendsocket,receivesocket;
//定义发送和接受DatagramSocket
//Construct the frame
public chatFrame() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception { //定义个组件和他们的布局contentPane = (JPanel) this.getContentPane();
label2.setAlignment(Label.CENTER);
label2.setFont(new java.awt.Font("SansSerif", 0, 15));
label2.setForeground(Color.black);
label2.setText("消息编辑框");
label1.setBounds(new Rectangle(14, 17, 133, 32));
contentPane.setLayout(null);
this.setSize(new Dimension(500, 400));
this.setTitle("用UDP实现聊天");
textField1.setBackground(SystemColor.text);
textField1.setColumns(0);
textField1.setFont(new java.awt.Font("Dialog", 0, 16));
textField1.setText("");
textField1.setBounds(new Rectangle(129, 72, 200, 61));
label1.setAlignment(Label.CENTER);
label1.setFont(new java.awt.Font("Dialog", 0, 15));
label1.setText("输入对方IP地址");
label2.setBounds(new Rectangle(23, 86, 108, 28));
try{
sendsocket=new DatagramSocket(5000); //初始化
receivesocket=new DatagramSocket(5001);
}
catch(SocketException se){ //可能产生Socketexception类的异常se.printStackTrace();
System.exit(0);
}
button1.setBackground(Color.magenta);
button1.setFont(new java.awt.Font("Dialog", 0, 13));
button1.setLabel("发送消息");
button1.setBounds(new Rectangle(374, 23, 88, 42));
button1.addActionListener(new java.awt.event.ActionListener (){
public void actionPerformed(ActionEvent e){
button1_actionPerformed(e);
}
});
textField2.setBackground(SystemColor.activeCaptionBorder);
textField2.setFont(new java.awt.Font("Dialog", 1, 18));
textField2.setLocale(java.util.Locale.getDefault());
textField2.setText("");
textField2.setBounds(new Rectangle(166, 21, 169, 29));
textArea1.setFont(new java.awt.Font("Dialog", 0, 13));
textArea1.setText("");
textArea1.setBounds(new Rectangle(46, 157, 382, 185));
contentPane.setBackground(new Color(113, 111, 159));
jButton1.setBackground(Color.pink);
jButton1.setBounds(new Rectangle(374, 86, 87, 42));
jButton1.setFont(new java.awt.Font("Dialog", 0, 13));
jButton1.setText("刷新频道");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
}
});
contentPane.add(label1, null);
contentPane.add(textField2, null);
contentPane.add(textField1, null);
contentPane.add(label2, null);
contentPane.add(textArea1, null);
contentPane.add(jButton1, null);
contentPane.add(button1, null);
}
//Overridden so we can exit when window is closed
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);