實驗八-網(wǎng)絡編程基礎_第1頁
實驗八-網(wǎng)絡編程基礎_第2頁
實驗八-網(wǎng)絡編程基礎_第3頁
實驗八-網(wǎng)絡編程基礎_第4頁
實驗八-網(wǎng)絡編程基礎_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗八 網(wǎng)絡編程基礎1實驗目的(1)掌握Socket通信。(2)掌握UDP通信2實驗內容實驗題1 使用InetAddress類的方法獲取/的主機的IP地址;獲取本地機的名稱和IP地址。具體代碼如下:package demo;import .InetAddress ;public class InetAddressDemo public static void main(String args)throws Exception InetAddress locAdd = null ;locAdd = InetAddress.getLoc

2、alHost() ;/ 得到本機System.out.println(本機的IP地址: + locAdd.getHostAddress() ;System.out.println(本機的名稱+locAdd.getHostName();運行結果如下:實驗題2 使用URL類下載西北農林科技大學首頁/,并統(tǒng)計下載得到網(wǎng)頁文件的大小。具體代碼如下:package demo;import .URL ;import .URLConnection ;import java.io.InputStream ;import java.u

3、til.Scanner ;public class URLConnectionDemo public static void main(String args) throws ExceptionURL url = new URL() ;URLConnection urlCon = url.openConnection() ;/ 建立連接InputStream input = url.openStream() ;Scanner scan = new Scanner(input) ;scan.useDelimiter(n) ;while(scan.ha

4、sNext()System.out.println(scan.next() ;System.out.println(內容大小: + urlCon.getContentLength() ;實驗題3 利用Socket類和ServerSocket類編寫一個C/S程序,實現(xiàn)C/S通信。客戶端向服務器端發(fā)送Time命令,服務器端接受到該字符串后將服務器端當前時間返回給客戶端;客戶端向服務器端發(fā)送Exit命令,服務器端向客戶端返回“Bye”后退出?;疽?編寫完整程序;兩人一組,一個作為服務器端,另一人作為客戶端。服務器端和客戶端都需要打印出接受到的消息和發(fā)出的命令。具體的程序代碼如下:package

5、demo;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import .ServerSocket;import .Socket;import java.util.Calendar;public class server public static void main(String args) try ServerSocket server = new ServerSocket(

6、9527);System.out.println(服務器啟動完畢);Socket socket = server.accept();System.out.println(創(chuàng)建客戶連接);InputStream input = socket.getInputStream();InputStreamReader isreader = new InputStreamReader(input);BufferedReader reader = new BufferedReader(isreader);while (true) String str = reader.readLine();if (str.

7、equals(exit) System.out.println(Bye);break;if (str.equals(Time) String s = Calendar.getInstance().getTime().toString();System.out.println(服務器當前的時間為: + s);reader.close();isreader.close();input.close();socket.close();server.close(); catch (IOException e) e.printStackTrace();package demo;import java.io

8、.IOException;import java.io.OutputStream;import .UnknownHostException;import .Socket;public class Client public static void main(String args) try Socket socket = new Socket(localhost, 9527);OutputStream out = socket.getOutputStream();out.write(Timen.getBytes();out.write(exitn.getByte

9、s(); catch (UnknownHostException e) e.printStackTrace(); catch (IOException e) e.printStackTrace();運行結果如下:實驗題4 編寫一數(shù)據(jù)報通信程序,實現(xiàn)簡單的聊天功能。聊天內容輸入文本確定清空退出圖3.14 聊天程序界面基本要求 兩人一組編寫完整程序?!傲奶靸热荨焙汀拜斎胛谋尽狈謩e為當前聊天的歷史信息和當前要傳送出去的聊天文本。“確定”、“清空”、“退出”三個按鈕分別實現(xiàn)發(fā)送當前聊天文本、清空當前聊天文本和退出系統(tǒng)的功能。具體代碼如下:package ChattingP;import java.aw

10、t.*;import java.awt.event.*;import java.io.IOException;import .*;import javax.swing.*;public class UDPmessage extends JFrame implements ActionListenerprivate JTextArea text;private JTextField ipText;private JTextField sendText;private JButton button;private DatagramSocket socket;private JScr

11、ollBar vsBar;public UDPmessage()setTitle(UDP聊天程序);setBounds(100,100,400,300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLayout(new BorderLayout();text = new JTextArea();text.setEditable(false);JScrollPane textPanel = new JScrollPane(text);vsBar = textPanel.getVerticalScrollBar();add(textPanel

12、,BorderLayout.CENTER);JPanel panel = new JPanel();BorderLayout panelLayout = new BorderLayout();panelLayout.setHgap(5);panel.setLayout(panelLayout);ipText = new JTextField(120.95.160.);panel.add(ipText,BorderLayout.WEST);sendText = new JTextField();panel.add(sendText,BorderLayout.CENTER);button = ne

13、w JButton(發(fā)送);panel.add(button,BorderLayout.EAST);add(panel,BorderLayout.SOUTH);setVisible(true);server();button.addActionListener(this);private void server()try socket = new DatagramSocket(9527);byte buf = new byte1024;final DatagramPacket dpl = new DatagramPacket(buf,buf.length);Runnable runnable

14、= new Runnable()public void run()while(true)tryThread.sleep(100);socket.receive(dpl);int length = dpl.getLength();String message = new String(dpl.getData(),0,length);String ip = dpl.getAddress().getHostAddress();if(!InetAddress.getLocalHost().getHostAddress().equals(ip)text.append(ip+:n +message+n);

15、vsBar.setValue(vsBar.getMaximum(); catch(IOException e)e.printStackTrace(); catch(InterruptedException e)e.printStackTrace();new Thread(runnable).start(); catch (SocketException e) e.printStackTrace();public void actionPerformed(ActionEvent ev)try String ip = ipText.getText();InetAddress address = I

16、netAddress.getByName(ip);byte data = sendText.getText().getBytes();DatagramPacket dp = new DatagramPacket(data, data.length,address,9527);String myip = InetAddress.getLocalHost().getHostAddress();text.append(myip+:n +sendText.getText()+n);socket.send(dp);sendText.setText(null); catch (UnknownHostExc

17、eption e) / TODO Auto-generated catch blocke.printStackTrace();catch(IOException e)e.printStackTrace();public static void main(String args) JFrame frame = new UDPmessage();運行結果如下:實驗題5 客戶機之間通過服務器交換數(shù)據(jù)。 提示:為了適應傳輸各種類型的數(shù)據(jù),必須統(tǒng)一客戶機的數(shù)據(jù)格式,為此可以將數(shù)據(jù)封裝在一個對象中,數(shù)據(jù)傳輸以對象的形式傳輸。因此必須定義一個數(shù)據(jù)封裝的類,此類實現(xiàn)Serializable接口。實驗代碼:pa

18、ckage cie.bing;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;public class Feng implements Serializable S

19、tring name;String password;int age;Overridepublic String toString() / TODO Auto-generated method stubreturn name+n+password+n+age;public Feng(String name,String password,int age)=name;this.password=password;this.age=age;public void setpassword(String password)this.password=password;public static void main(String args) throws IOException / TODO Auto-generated method stubFeng user=new Feng(li,3123,23

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論