您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 实验八-java网络编程基础
实验八网络编程基础1.实验目的(1)掌握Socket通信。(2)掌握UDP通信2.实验内容实验题1使用InetAddress类的方法获取的主机的IP地址;获取本地机的名称和IP地址。具体代码如下:importjava.net.InetAddress;publicclassInetAddressDemo{publicstaticvoidmain(String[]args)throwsException{InetAddresslocAdd=null;locAdd=InetAddress.getLocalHost();//得到本机System.out.println(本机的IP地址:+locAdd.getHostAddress());System.out.println(本机的名称+locAdd.getHostName());}}运行结果如下:实验题2使用URL类下载西北农林科技大学首页,并统计下载得到网页文件的大小。具体代码如下:packagedemo;importjava.net.URL;importjava.net.URLConnection;importjava.io.InputStream;importjava.util.Scanner;publicclassURLConnectionDemo{publicstaticvoidmain(String[]args)throwsException{URLurl=newURL();URLConnectionurlCon=url.openConnection();//建立连接InputStreaminput=url.openStream();Scannerscan=newScanner(input);scan.useDelimiter(\n);while(scan.hasNext()){System.out.println(scan.next());}System.out.println(内容大小:+urlCon.getContentLength());}}实验题3利用Socket类和ServerSocket类编写一个C/S程序,实现C/S通信。客户端向服务器端发送Time命令,服务器端接受到该字符串后将服务器端当前时间返回给客户端;客户端向服务器端发送Exit命令,服务器端向客户端返回“Bye”后退出。[基本要求]编写完整程序;两人一组,一个作为服务器端,另一人作为客户端。服务器端和客户端都需要打印出接受到的消息和发出的命令。具体的程序代码如下:importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.Calendar;publicclassserver{publicstaticvoidmain(String[]args){try{ServerSocketserver=newServerSocket(9527);System.out.println(服务器启动完毕);Socketsocket=server.accept();System.out.println(创建客户连接);InputStreaminput=socket.getInputStream();InputStreamReaderisreader=newInputStreamReader(input);BufferedReaderreader=newBufferedReader(isreader);while(true){Stringstr=reader.readLine();if(str.equals(exit)){System.out.println(Bye);break;}if(str.equals(Time)){Strings=Calendar.getInstance().getTime().toString();System.out.println(服务器当前的时间为:+s);}}reader.close();isreader.close();input.close();socket.close();server.close();}catch(IOExceptione){e.printStackTrace();}}}importjava.io.IOException;importjava.io.OutputStream;importjava.net.UnknownHostException;importjava.net.Socket;publicclassClient{publicstaticvoidmain(String[]args){try{Socketsocket=newSocket(localhost,9527);OutputStreamout=socket.getOutputStream();out.write(Time\n.getBytes());out.write(exit\n.getBytes());}catch(UnknownHostExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}}运行结果如下:实验题4编写一数据报通信程序,实现简单的聊天功能。图3.14聊天程序界面[基本要求]两人一组编写完整程序。“聊天内容”和“输入文本”分别为当前聊天的历史信息和当前要传送出去的聊天文本。“确定”、“清空”、“退出”三个按钮分别实现发送当前聊天文本、清空当前聊天文本和退出系统的功能。具体代码如下:packageChattingP;importjava.awt.*;importjava.awt.event.*;importjava.io.IOException;importjava.net.*;importjavax.swing.*;publicclassUDPmessageextendsJFrameimplementsActionListener{privateJTextAreatext;privateJTextFieldipText;privateJTextFieldsendText;privateJButtonbutton;privateDatagramSocketsocket;privateJScrollBarvsBar;publicUDPmessage(){setTitle(UDP聊天程序);setBounds(100,100,400,300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLayout(newBorderLayout());text=newJTextArea();聊天内容输入文本确定清空退出text.setEditable(false);JScrollPanetextPanel=newJScrollPane(text);vsBar=textPanel.getVerticalScrollBar();add(textPanel,BorderLayout.CENTER);JPanelpanel=newJPanel();BorderLayoutpanelLayout=newBorderLayout();panelLayout.setHgap(5);panel.setLayout(panelLayout);ipText=newJTextField(120.95.160.);panel.add(ipText,BorderLayout.WEST);sendText=newJTextField();panel.add(sendText,BorderLayout.CENTER);button=newJButton(发送);panel.add(button,BorderLayout.EAST);add(panel,BorderLayout.SOUTH);setVisible(true);server();button.addActionListener(this);}privatevoidserver(){try{socket=newDatagramSocket(9527);byte[]buf=newbyte[1024];finalDatagramPacketdpl=newDatagramPacket(buf,buf.length);Runnablerunnable=newRunnable(){publicvoidrun(){while(true){try{Thread.sleep(100);socket.receive(dpl);intlength=dpl.getLength();Stringmessage=newString(dpl.getData(),0,length);Stringip=dpl.getAddress().getHostAddress();if(!InetAddress.getLocalHost().getHostAddress().equals(ip)){text.append(ip+:\n+message+\n);}vsBar.setValue(vsBar.getMaximum());}catch(IOExceptione){e.printStackTrace();}catch(InterruptedExceptione){e.printStackTrace();}}}};newThread(runnable).start();}catch(SocketExceptione){e.printStackTrace();}}publicvoidactionPerformed(ActionEventev){try{Stringip=ipText.getText();InetAddressaddress=InetAddress.getByName(ip);byte[]data=sendText.getText().getBytes();DatagramPacketdp=newDatagramPacket(data,data.length,address,9527);Stringmyip=InetAddress.getLocalHost().getHostAddress();text.append(myip+:\n+sendText.getText()+\n);socket.send(dp);sendText.setText(null);}catch(UnknownHostExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args){JFrameframe=newUDPmessage();}}运行结果如下:实验题5客户机之间通过服务器交换数据。提示:为了适应传输各种类型的数据,必须统一客户机的数据格式,为此可以将数据封装在一个对象中,数据传输以对象的形式传输。因此必须定义一个数据封装的类,此类实现Serializable接口。实验代码:packagecie.bing;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.i
本文标题:实验八-java网络编程基础
链接地址:https://www.777doc.com/doc-5307116 .html