实验08 Java之网络编程.doc_第1页
实验08 Java之网络编程.doc_第2页
实验08 Java之网络编程.doc_第3页
实验08 Java之网络编程.doc_第4页
实验08 Java之网络编程.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

实验七 网络编程1实验目的(1)掌握Socket通信。(2)掌握UDP通信2实验内容实验题1 利用Socket类和ServerSocket类编写一个C/S程序,实现C/S通信。客户端向服务器端发送Time命令,服务器端接受到该字符串后将服务器端当前时间返回给客户端;客户端向服务器端发送Exit命令,服务器端向客户端返回“Bye”后退出。基本要求 编写完整程序。服务器端:package .jp; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import .ServerSocket; import .Socket; public class MessageServer public static void main(String args) try ServerSocket server = new ServerSocket(3000); Socket client = server.accept();/启动倾听,等待客户端 BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream();/输入流对象 PrintWriter out = new PrintWriter(client.getOutputStream();/输出流对象 BufferedReader userin = new BufferedReader(new InputStreamReader(System.in);/实现键盘输入 /启动接受和发送线程 new sendThread(out,userin,server).start(); new reciveThread(in).start(); catch (IOException e) e.printStackTrace(); package .jp;import java.io.BufferedReader;import java.io.IOException;import java.io.PrintWriter;import .ServerSocket;import .Socket;public class reciveThread extends Thread BufferedReader in;/ 服务器端接受线程public reciveThread(BufferedReader in) this.in = in;Overridepublic void run() try while (true) String info = in.readLine();/ 获取信息if (info.equals(exit) break;while (info != null) System.out.println(info);info = in.readLine();if (info.equals(exit) System.out.println(info);break;break; catch (IOException e) e.printStackTrace();package .jp;import java.io.BufferedReader;import java.io.IOException;import java.io.PrintWriter;import .ServerSocket;import .Socket;import java.text.SimpleDateFormat;import java.util.Date;public class sendThread extends Thread PrintWriter out;BufferedReader userin;ServerSocket server;public sendThread(PrintWriter out, BufferedReader userin, ServerSocket server ) this.out = out;this.userin = userin;this.server = server;Overridepublic void run() SimpleDateFormat sf = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss.sss);String str = null;try out.println(sf.format(new Date();out.flush();while (true) str = userin.readLine();out.println(Server: + n + str);/ 服务器端从键盘输入out.flush();if (str.equals(Bybe) break;userin.close();server.close(); catch (IOException e) e.printStackTrace();客户端:package .jp; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import .InetAddress; import .Socket; public class clent public static void main(String args) try Socket server = new Socket(InetAddress.getLocalHost(), 3000);/创建套接字 BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream(); PrintWriter out=new PrintWriter(server.getOutputStream(); BufferedReader userin = new BufferedReader(new InputStreamReader(System.in); new sendThread(out,userin).start(); new reciveThread(server,in,out,userin).start(); catch (IOException e) e.printStackTrace(); package .jp;import java.io.BufferedReader;import java.io.IOException;import java.io.PrintWriter;import .ServerSocket;import .Socket;public class reciveThread extends Thread BufferedReader in;PrintWriter out;BufferedReader userin;Socket client;public reciveThread(Socket client, BufferedReader in, PrintWriter out,BufferedReader userin) this.in = in;this.client = client;this.out = out;this.userin = userin;Overridepublic void run() try while (true) String info = in.readLine();if (info.equals(Bybe) break;while (info != null) System.out.println(info);info = in.readLine();if (info.equals(Bybe) System.out.println(info);break;break;client.close();in.close();out.close();userin.close(); catch (IOException e) e.printStackTrace();package .jp;import java.io.BufferedReader;import java.io.IOException;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.Date;public class sendThread extends Thread PrintWriter out;BufferedReader userin;public sendThread(PrintWriter out, BufferedReader userin) this.out = out;this.userin = userin;Overridepublic void run() SimpleDateFormat sf = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss.sss);String str = null;try out.println(sf.format(new Date();out.flush();while (true) str = userin.readLine();out.println(client: + n + str);out.flush(); catch (IOException e) e.printStackTrace();实验题2 编写一数据报通信程序,实现简单的聊天功能。聊天内容输入文本确定清空退出图3.9 聊天程序界面基本要求 两人一组编写完整程序。“聊天内容”和“输入文本”分别为当前聊天的历史信息和当前要传送出去的聊天文本。“确定”、“清空”、“退出”三个按钮分别实现发送当前聊天文本、清空当前聊天文本和退出系统的功能。package .udp.jp;import java.awt.BorderLayout;public class Gui_Udp extends JFrame private JPanel contentPane;private JTextField textField;private static JTextArea textArea;public static void receive() throws Exception DatagramSocket ds = new DatagramSocket(7000);byte buf = new byte1024;DatagramPacket dp = new DatagramPacket(buf, 1024);ds.receive(dp);String ip = dp.getAddress().getHostAddress();if(!InetAddress.getLocalHost().getHostAddress().equals(ip)textArea.append(接收UDP包:n + new String(buf, 0, dp.getLength() + n);ds.close();public void send(String sendStr) throws Exception InetAddress address = InetAddress.getByName();byte buf = sendStr.getBytes();DatagramPacket dp = new DatagramPacket(buf, buf.length, address, 7000);DatagramSocket ds = new DatagramSocket();ds.send(dp);ds.close();static void recieve() /接收UDP包new Thread(new Runnable() Overridepublic void run() try receive(); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace();).start();/* * Launch the application. */public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() try Gui_Udp frame = new Gui_Udp();recieve();frame.setVisible(true); catch (Exception e) e.printStackTrace(););/* * Create the frame. */public Gui_Udp() setResizable(false);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 450, 300);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5);setContentPane(contentPane);contentPane.setLayout(null);JButton btnSureButton = new JButton(u786Eu5B9A);btnSureButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) if (textField.getText() != ) textArea.append(发送UDP包:n + textField.getText() + n);try send(textField.getText();/发送UDP包textField.setText(null); catch (Exception e) e.printStackTrace(););btnSureButton.setBounds(323, 34, 83, 27);contentPane.add(btnSureButton);JButton btnClearButton = new JButton(u6E05u7A7A);btnClearButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) textField.setText();textArea.setText(););btnClearButton.setBounds(323, 100, 83, 27);contentPane.add(btnClearButton);JButton btnOutButton = new JButton(u900

温馨提示

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

评论

0/150

提交评论