java Swing 与socket 做的单线程聊天程序.doc_第1页
java Swing 与socket 做的单线程聊天程序.doc_第2页
java Swing 与socket 做的单线程聊天程序.doc_第3页
java Swing 与socket 做的单线程聊天程序.doc_第4页
java Swing 与socket 做的单线程聊天程序.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安工业大学计算机科学与工程学院网络工程系组建技术J1实验报告班级:090612 姓名:唐 建 学号:0906121142011年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.CENTER);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.getDefaultToolkit().getScreenSize().getWidth()/2-250),(int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight()/2-250);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);/初始化服务器端try server = new ServerSocket(9999);/创建服务器,端口为9999this.textArea.append(服务器创建成功!);socket = server.accept();/等待客户端的连接reader = new BufferedReader(new InputStreamReader(socket.getInputStream();writer = new PrintWriter(socket.getOutputStream(),true);writer.println(服务器已经连接成功!);writer.flush();domsg = reader.readLine();/读取客户端发来的消息this.textArea.append(msg+n);if(msg.equalsIgnoreCase(客户端说:bye)flag = true;break;while(true);catch (IOException e) / TODO Auto-generated catch blockthis.textArea.append(创建服务器失败);finallytrywriter.close();reader.close();socket.close();server.close();catch (IOException e) / TODO Auto-generated catch blockthis.textArea.append(关闭服务器时发生异常!);public void send()/发送消息的方法message = textField.getText().trim();if(flag)JOptionPane.showMessageDialog(getContentPane(), 客户端已经离开,不能发送消息,信息提示框,JOptionPane.WARNING_MESSAGE);else if(message.equals()|(message.equals(null)JOptionPane.showMessageDialog(getContentPane(), 消息不能为空,消息警告框,JOptionPane.WARNING_MESSAGE);else writer.println(服务器说:+message);writer.flush();textArea.append(你说:+message+n);textField.setText();/清空文本框if(message.equalsIgnoreCase(bye)try writer.close();reader.close();socket.close();server.close(); catch (IOException e1) / TODO Auto-generated catch blocktextArea.append(服务器关闭时发生异常);public static void main(String args) Server server = new Server();客户端代码如下(Client):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 Client extends JFrame private JTextField textField = null;private JButton button = null;private JTextArea textArea = null;private JScrollPane scrollPane = null;private JPanel panel = 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 Client()super();textField = new JTextField(40);button = new JButton(发送);textArea = new JTextArea();scrollPane = new JScrollPane();panel = new JPanel();this.add(scrollPane,BorderLayout.CENTER);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(客户端Client);this.setSize(500,500);this.setLocation(int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth()/2-250),(int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight()/2-250);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);/初始化客户端try socket = new Socket(,9999);/连接客户端reader = new BufferedReader(new InputStreamReader(socket.getInputStream();writer = new PrintWriter(socket.getOutputStream(),true);domsg = reader.readLine();/读取服务器发来的消息this.textArea.append(msg+n);if(msg.equalsIgnoreCase(服务器说:bye)flag = true;break;while(true);catch (IOException e) / TODO Auto-generated catch blockthis.textArea.append(创建客户端失败);finallytrywriter.close();reader.close();socket.close();catch (IOException e) / TODO Auto-generated catch blockthis.textArea.append(关闭连接时发生异常!);public void send()/发送消息message = textField.getText().trim();if(flag)JOptionPane.showMessageDialog(getContentPane(), 服务器已停止,不能发送消息,信息提示框,JOptionPane.WARNING_MESSAGE);else if(message.equals()|(message.equals(null)JOptionPane.showMessageDialog(getContentPane(), 消息不能为空,消息警告框,JOptionPane.WARNI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论