Java聊天程序实验报告.doc_第1页
Java聊天程序实验报告.doc_第2页
Java聊天程序实验报告.doc_第3页
Java聊天程序实验报告.doc_第4页
Java聊天程序实验报告.doc_第5页
免费预览已结束,剩余4页可下载查看

下载本文档

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

文档简介

Java网络通信一、 实验内容1、 图形界面编程,利用TCP的socket或者UDP编写,客户端和服务器端程序可以进行多次对话。2、 利用程序,访问一个网站,将指定的一个页面保存到本地。二、 实验目的1、学习java网络通信中的Socket编程,熟悉TCP和UDP的应用。 2、学习网络编程的基础内容,了解TCP/IP协议的简单概念,和JAVA结合编程。3、实现事件的处理,比如说鼠标的单击,按下等操作。三、 实验分析1、UDP中Socket中的编程也分为服务器和客户端,与TCP不同的是它无需建立、拆除连接,直接将信息打包传向指定的目的地,使用起来比TCP要简单一些。2、第三个程序,我写了一个简单的网页浏览器,功能不是很全面,但是能实现,查看源文件,保存,全屏,还原等功能,还能自动修正输入的网络地址。就是有时候图片显示还有点问题。主要用到了JEditorPane中的setPage()解析html文件。四、 程序代码1、 UDP服务端import java.io.*;import .*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class UDPServer extends JFrameJTextField jtf=new JTextField(30);JTextArea jta=new JTextArea();JButton jb=new JButton(发送);JPanel jp=new JPanel();DatagramSocket serversocket=null;DatagramPacket serverpacket=null,serverpacket1=null;InetAddress address;int port;String datagram;public UDPServer()jp.setLayout(new FlowLayout();jp.add(jtf);jp.add(jb);this.getContentPane().add(jp,BorderLayout.SOUTH);this.getContentPane().add(new JScrollPane(jta),BorderLayout.CENTER);jta.setEditable(false);jb.addActionListener(new buttonListener();setTitle(服务器);setSize(600,400);setVisible(true);this.addWindowListener(new winAdpt();tryserversocket=new DatagramSocket(5555);jta.append(服务器已启动正在监听端口5555.+n);catch(Exception eg)while(true)trybyte databuf=new byte512;serverpacket=new DatagramPacket(databuf,512);serversocket.receive(serverpacket);address=serverpacket.getAddress();port=serverpacket.getPort();datagram=new String(serverpacket.getData();jta.append(datagram+n);catch(IOException ex)jta.append(ex.toString()+n);public static void main(String args) new UDPServer();class winAdpt extends WindowAdapterpublic void windowClosing(WindowEvent e)tryserversocket.close();serversocket=null;catch(Exception ea)e.getWindow().dispose();System.exit(0);class buttonListener implements ActionListenerpublic void actionPerformed(ActionEvent e)trybyte databuf=new byte512;datagram=jtf.getText();databuf=datagram.getBytes();serverpacket1=new DatagramPacket(databuf,databuf.length,address,port);serversocket.send(serverpacket1);catch(IOException ex)jta.append(e.toString()+n);2、 UDP客户端import java.io.*;import .*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class UDPClient extends JFrameJTextField jtf=new JTextField(30);JTextArea jta=new JTextArea();JButton jb=new JButton(发送);JPanel jp=new JPanel();DatagramSocket socket=null;DatagramPacket packet=null,packet1=null;String datagram=null;InetAddress address=null;public UDPClient()jp.setLayout(new FlowLayout();jp.add(jtf);jp.add(jb);this.getContentPane().add(jp,BorderLayout.SOUTH);this.getContentPane().add(new JScrollPane(jta),BorderLayout.CENTER);jta.setEditable(false);jb.addActionListener(new buttonListener();setTitle(客户端);setSize(600,400);setVisible(true);this.addWindowListener(new winAdpt();trysocket=new DatagramSocket(6666);address=InetAddress.getByName();catch(IOException eg)while(true)trybytedatabuf=new byte512;packet=new DatagramPacket(databuf,512);socket.receive(packet);datagram=new String(packet.getData();jta.append(datagram+n);catch(Exception e)public static void main(String args) new UDPClient();class buttonListener implements ActionListenerpublic void actionPerformed(ActionEvent e)trydatagram=jtf.getText();byte databuf=datagram.getBytes();packet1=new DatagramPacket(databuf,databuf.length,address,5555);socket.send(packet1);catch(IOException ex)jta.append(e.toString()+n);class winAdpt extends WindowAdapterpublic void windowClosing(WindowEvent e)trysocket.close();socket=null;catch(Exception ea)e.getWindow().dispose();System.exit(0);3、 浏览器程序MyWebBrowser.java文件import .*;import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.io.*;public class MyWebBrowser implements ActionListener/窗口/JFrame mainwindow=new JFrame(我的浏览器);/主窗口Container contentpane=mainwindow.getContentPane();/内容窗格JWindow fullscreen=new JWindow(mainwindow);/建立全屏窗格Container contentpane1=fullscreen.getContentPane();/菜单/JMenuBar menuBar=new JMenuBar();/创建菜单条JMenu menu_file=new JMenu(文件);/创建“文件”菜单项JMenuItem file_saveas=new JMenuItem(另存为);/“另存为”菜单项子项JMenuItem file_exit=new JMenuItem(退出);JMenu menu_edit=new JMenu(编辑);/创建“编辑”菜单项JMenuItem edit_cut=new JMenuItem(剪切);/“剪切”菜单项子项JMenuItem edit_copy=new JMenuItem(复制);JMenuItem edit_paste=new JMenuItem(粘贴);JMenu menu_view=new JMenu(视图);/创建“视图”菜单项JPopupMenu fromto=new JPopupMenu(转到);/“转到”菜单项子项JMenuItem pop_backward=new JMenuItem(后退);/”后退“JMenuItem pop_forward =new JMenuItem(前进);/“前进”JMenuItem view_reload=new JMenuItem(刷新);JMenuItem view_getsource=new JMenuItem(源文件);JMenuItem view_fullscreen=new JMenuItem(全屏);JMenu menu_help=new JMenu(帮助);/“帮助”菜单项JMenuItem aboutme=new JMenuItem(关于);/工具条/JToolBar toolbar=new JToolBar();/定义工具条JButton tool_backward=new JButton(后退); /“后退”JButton tool_forward=new JButton(前进);/“前进”JLabel prompt=new JLabel(地址:);/地址标签JTextField address=new JTextField(10);/文本框,用于输入URLJButton go=new JButton(转到/刷新);/转到按钮JButton stop=new JButton(停止);JButton recover= new JButton(还原); /从最大化还原成最小化时的按钮,构造时不添加/内容框/JEditorPane editorpane= new JEditorPane ();JScrollPane scrollpane= new JScrollPane ();JTabbedPane tabbedpane=new JTabbedPane();/创建/其他变量/String url;ArrayList history=new ArrayList();/用于保存历史记录int historyindex;Dimension initsize=new Dimension(900,600);Dimension maxsize = Toolkit.getDefaultToolkit().getScreenSize();/屏幕大小/构造函数/public MyWebBrowser()menu_file.add(file_saveas);/将菜单子项加入到菜单项menu_file.addSeparator();/加一条分割线menu_file.add(file_exit);menuBar.add(menu_file);/将“文件”菜单项加入到菜单条中menu_edit.add(edit_cut);menu_edit.add(edit_copy);menu_edit.add(edit_paste);menuBar.add(menu_edit);fromto.add(pop_backward);fromto.add(pop_forward);menu_view.add(fromto);menu_view.add(view_reload);menu_view.addSeparator();/分割线menu_view.add(view_getsource);menu_view.add(view_fullscreen);menuBar.add(menu_view);menu_help.add(aboutme);menuBar.add(menu_help);mainwindow.setJMenuBar(menuBar);/把菜单条加入到整个JFrame容器中toolbar.add(tool_backward);toolbar.add(tool_forward);toolbar.add(prompt);toolbar.add(address);toolbar.add(go);toolbar.add(stop);contentpane.add(toolbar,BorderLayout.NORTH);/添加工具条editorpane.setEditable(false);/设置文本区域不能写scrollpane.getViewport().add(editorpane);/窗格可视区添加JEditorpanecontentpane.add(scrollpane,BorderLayout.CENTER);/添加滚动窗格file_saveas.addActionListener(this);/添加事件监听file_exit.addActionListener(this);edit_cut.addActionListener(this);edit_copy.addActionListener(this);edit_paste.addActionListener(this);pop_backward.addActionListener(this);pop_forward.addActionListener(this);view_reload.addActionListener(this);view_getsource.addActionListener(this);view_fullscreen.addActionListener(this);aboutme.addActionListener(this);tool_backward.addActionListener(this);tool_forward.addActionListener(this);address.addActionListener(this);go.addActionListener(this);stop.addActionListener(this);mainwindow.setSize(initsize);mainwindow.setVisible(true);/事件处理函数/public void actionPerformed(ActionEvent e)url=address.getText().trim();/获取URLif(e.getActionCommand()=转到/刷新|e.getSource()=address|e.getActionCommand()=刷新)if(url.length()0)if(!url.startsWith(http:/)url=http:/+url;if(!url.endsWith(/)url=url+/;tryeditorpane.setPage(url);address.setText(url);history.add(url);historyindex=history.size()-1;catch(Exception ex)JOptionPane.showMessageDialog (mainwindow,无法打开该搜索页,网页浏览器,JOptionPane.ERROR_MESSAGE);else if(e.getActionCommand()=后退)historyindex-;if(historyindex=history.size()historyindex=history.size()-1;tryurl=(String)history.get(historyindex);editorpane.setPage(url);address.setText(url);catch(Exception ex)JOptionPane.showMessageDialog (mainwindow,无法打开该搜索页,网页浏览器,JOptionPane.ERROR_MESSAGE);else if(e.getActionCommand()=源文件|e.getSource()=view_getsource)if(url.length()0)new sourcefile(url);else if(e.getActionCommand()=全屏)mainwindow.setVisible(false);toolbar.add(recover);contentpane1.add(toolbar,BorderLayout.NORTH);contentpane1.add(scrollpane, BorderLayout.CENTER);recover.addActionListener(new ActionListener ()public void actionPerformed(ActionEvent e1)contentpane1.remove(scrollpane);toolbar.remove(recover);contentpane1.remove(toolbar);fullscreen.setVisible (false); /还原mainwindow.add(toolbar,BorderLayout.NORTH);/添加工具条mainwindow.add(scrollpane,BorderLayout.CENTER);mainwindow.setSize(initsize);mainwindow.setVisible(true););fullscreen.setSize (maxsize); fullscreen.setVisible (true);else if(e.getActionCommand()=关于)JOptionPane.showMessageDialog (mainwindow,我的浏览器n版本:1.0,关于,JOptionPane.CLOSED_OPTION);public static void main(String args) new MyWebBrowser();Source_file.java文件import java.awt.*;import java.awt.event.*;import javax.swing.*;import .*;import java.io.*;public class

温馨提示

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

评论

0/150

提交评论