java Swing 与socket 做的单线程聊天程序.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安工业大学
计算机科学与工程学院网络工程系组建技术J1实验报告
班级:090612
姓名:唐建
学号:090612114
2011年10月17日
一、实验目的
1.掌握InetAddress类的使用。
2.掌握TCP与UDP编程:Socket与Datagram的概念和编程方法。
3.掌握URL类的使用:URL的概念和编程。
二、实验要求
通过Socket编程,掌握网络应用程序的开发方法;完成数据库的连接;掌握利用
Java提供的基本组件进行网络传输;掌握Java提供的多线程机制,异常处理机制和低层对协议的通信机制,通过Socket编程,掌握网络应用程序的开发方法;设计测试,性能评估。上机练习之前,必须先完成程序的书写,再上机调试。
三、实验内容
(一)使用InetAddress类的方法
通过使用InetAddress类的方法,获取/的主机的IP地址;获取本地机的名称和IP地址。
(二)Socket编程
使用Socket编程,客户机发送数据到
服务器,服务器将接收到的数据返回给客户机。
(三)UDP编程
使用UDP编程,客户机发送数据到服务器,服务器将接收到的数据返回给客户机(四)获取URL信息
(五)利用URL类获取网络资源
(六)利用URLConnection对URL资源的读取
(七)掌握URLConnection对URL资源的写入
四:程序如下:
//服务器端代码(Server):
package com.demo.test;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; import java.io.PrintWriter;
import .ServerSocket;
import .Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane; import javax.swing.JPanel;
import javax.swing.JScrollPane; import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Server extends JFrame {
private JTextField textField = null; private JButton button = null; private JTextArea textArea = null; private JScrollPane scrollPane= null;
private JPanel panel = null;
private ServerSocket server = null; private Socket socket = null; private BufferedReader reader= null;
private PrintWriter writer= null; private String msg = null;//存放接收到的消息
private String message = null;//存放发送的消息
private boolean flag= false;//判断客户端是否断开连接
public Server(){
super();
textField = new JTextField(40);
button = new JButton("发送");
textArea = new JTextArea();
scrollPane = new JScrollPane();
panel = new JPanel();
this.add(scrollPane,BorderLayout.CE NTER);
this.add(panel,BorderLayout.SOUTH);
scrollPane.setViewportView(textArea );
panel.add(textField);
textField.setFont(new Font("仿宋",Font.BOLD,18));
textField.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
send();
}
});
panel.add(button);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
send();
}});
this.setTitle("服务器端Server");
this.setSize(500,500);
this.setLocation((int)(Toolkit.getD efaultToolkit().getScreenSize().getWi dth()/2-250),(int)(Toolkit.getDefault Toolkit().getScreenSize().getHeight() /2-250));
this.setDefaultCloseOperation(JFram e.EXIT_ON_CLOSE);
this.setVisible(true);
//初始化服务器端