您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 实验六 Java 网络通信程序设计
1实验六Java网络通信程序设计一、实验目的1.了解Java语言的网络通信功能,以及Socket通信的概念2.掌握Socket通信的编程方法二、准备工作1.JDK的安装设置:JDK/JRE/JVM;2.Eclipse集成开发环境的绿色安装;3.ChatServer.java/Connection.java/hosts.txt三、实验描述1.实验类型:设计2.实验学时:2学时3.实验内容:编写代码来实现chatroom客户端与聊天服务器的连接4.实验要求:聊天服务器负责将从一个客户端受到的消息发送给所有连接的客户端(包括最初的发送者)。因此,必须对聊天客户端(应用程序)进行修改,使其能够执行两个行为:①它必须将用户的消息发送给服务器;②它必须将从服务器接收的消息显示到输出JTextArea组件。5.修改ChatClient类:①导入java.net和java.io包。②添加保存套接字连接的输入和输出流的实例变量。其他变量的添加取决于具体实现。③添加doConnect方法以启动到服务器的TCP/IP套接字连接。服务器应用程序的主机名(或IP地址)可以设定成本机的环回地址,端口号与服务器端口号保持一致。a.对服务器IP和端口信息进行初始化b.创建与聊天服务器的连接c.准备输入流并将其存储在一个实例变量中d.准备输出流并将其存储在一个实例变量中e.启动阅读器线程f.使用catch子句捕获任何异常2④修改LaunchFrame方法以调用doConnect方法。⑤修改SendHandler嵌套类以便将消息文本(以及用户名)发送给套接字输出流。删除向输出文本区域显示消息的代码。⑥创建实现Runnable接口的RemoteReader嵌套类。run()方法必须一次从无限循环的套接字输入流中读取一行。四、实验要求及总结1.结合上课内容,对上述程序先阅读,然后上机并调试程序,并对实验结果写出你自己的分析结论。2.整理上机步骤,总结经验和体会。3.完成实验报告和上交程序。实验六:实验结果:importjava.awt.*;importjava.io.*;importjava.net.*;importjava.awt.color.*;importjavax.swing.event.*;importjava.util.*;importjava.net.Socket;importjava.text.*;importjava.awt.event.*;3importjavax.swing.*;publicclassChatroomextendsJFrameimplementsActionListener,ItemListener,Runnable{//使用Runnable接口Socketsocket=null;//声明套接字对象Threadthread;//声明Thread对象DataInputStreamin=null;//输入输出流,这里使用数据流DataOutputStreamout=null;JMenuBarmenubar;JMenuFile,Help,edit;JMenuItemsend,quit,about,copy,cut,paste;JTextFieldtext;JButtonConnect,Send,Quit;//声明链接组件Connect,用于连接服务器JTextAreaarea;JComboBoxchoice,list;JPanelpanel,panel2;Colorred=newColor(255,0,0);Colorgreen=newColor(0,255,0);Colorblue=newColor(0,0,255);Coloryellow=newColor(255,255,0);publicChatroom(){setBounds(100,100,150,150);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);init();}publicvoidinit(){setTitle(客户端);FlowLayoutflow=newFlowLayout();flow.setAlignment(FlowLayout.LEFT);socket=newSocket();thread=newThread(this);panel2=newJPanel(flow);menubar=newJMenuBar();File=newJMenu(FIle);Help=newJMenu(Help);edit=newJMenu(edit);send=newJMenuItem(send,newImageIcon(F:/workspace/ChatRoom/src/2.jpg));4quit=newJMenuItem(quit,newImageIcon(F:/workspace/ChatRoom/src/3.png));about=newJMenuItem(about,newImageIcon(F:/workspace/ChatRoom/src/1.jpg));copy=newJMenuItem(copy);cut=newJMenuItem(cut);paste=newJMenuItem(paste);list=newJComboBox();GraphicsEnvironmentge=GraphicsEnvironment.getLocalGraphicsEnvironment();Stringfontmat[]=ge.getAvailableFontFamilyNames();for(Stringstr:fontmat){list.addItem(str);}send.setAccelerator(KeyStroke.getKeyStroke('S'));quit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,InputEvent.CTRL_MASK));about.setAccelerator(KeyStroke.getKeyStroke('A'));copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));panel2.setBackground(yellow);edit.add(cut);edit.add(copy);edit.add(paste);File.add(send);File.add(quit);File.add(edit);Help.add(about);menubar.add(File);menubar.add(Help);menubar.add(list);panel2.add(menubar);panel2.add(list);add(panel2,BorderLayout.NORTH);area=newJTextArea(90,90);area.setLineWrap(true);area.setForeground(Color.black);add(newJScrollPane(area),BorderLayout.WEST);text=newJTextField(Entryyourchattingwords....,10);text.setHorizontalAlignment(JTextField.CENTER);5add(text,BorderLayout.SOUTH);panel=newJPanel();panel.setLayout(newGridLayout(3,1));Connect=newJButton(COnnect);Send=newJButton(SEND,newImageIcon(F:/workspace/ChatRoom/src/5.jpg));Quit=newJButton(QUIT,newImageIcon(F:/workspace/ChatRoom/src/6.gif));Quit.setHorizontalTextPosition(AbstractButton.CENTER);Quit.setBackground(red);Send.setBackground(green);Send.setHorizontalTextPosition(AbstractButton.CENTER);Quit.setMnemonic('q');Send.setMnemonic('s');choice=newJComboBox();choice.setBackground(blue);choice.setForeground(yellow);choice.addItem(zhaozhen);choice.addItem(zhaoyao);choice.addItem(zhangsan);choice.addItem(lisi);panel.add(Connect);panel.add(Send);panel.add(Quit);panel.add(choice);add(panel,BorderLayout.CENTER);Send.addActionListener(this);Quit.addActionListener(this);send.addActionListener(this);quit.addActionListener(this);text.addActionListener(this);about.addActionListener(this);copy.addActionListener(this);cut.addActionListener(this);paste.addActionListener(this);list.addItemListener(this);Connect.addActionListener(this);//注册Connect侦听器}publicvoidactionPerformed(ActionEvente){Datenow=newDate();DateFormatd=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);6Stringstr=d.format(now);if(e.getSource()==Connect){//连接服务器try{if(socket.isConnected()){}else{InetAddressaddress=InetAddress.getByName(127.0.0.1);//本机测试InetSocketAddresssocketaddress=newInetSocketAddress(address,2000);//2000端口socket.connect(socketaddress);//建立连接out=newDataOutputStream(socket.getOutputStream());in=newDataInputStream(socket.getInputStream());send.setEnabled(true);if(!(thread.isAlive()))thread=newThread(this);thread.start();//启动线程,负责接受数据}}catch(IOExceptionee){System.out.println(ee);socket=newSocke
本文标题:实验六 Java 网络通信程序设计
链接地址:https://www.777doc.com/doc-3621079 .html