2011年5月11日 星期三

網路核心程式設計-Week11-Homework

1.在blog 說明 Class InetAddress 的用法,以程式舉例

此類別表示網際網路協議 (IP) 位址。IP 位址是 IP 使用的 32 位或 128 位無符號數字,

它是一種低層級協議,UDP 和 TCP 協議都是在它的基礎上建構的。

InetAddress 的實例包含 IP 位址,還可能包含相應的主機名(取決於它是否用主機名建構或者是否已執行反向主機名解析)。

import java.net.*;
class GetIP {
public static void main(String[] args)
{

try{
InetAddress IP_Address = InetAddress.getByName("www.kimo.com.tw");
System.out.println(IP_Address);
}catch (UnknownHostException e){
System.out.println("找不到 www.kimo.com.tw 位址");
}
}
}
編譯與執行

javac GetIP.java

java GetIP

資料參考:

1.http://www.138vipbbs.com/vipccb/ccb/topic_view.cgi?forum=7&article_id=0107051121211619&publishtime_id=0107051121211619&class=1&new_window=1


2.說明FTP client/server 程式與FTP通訊協定

==============================================================
//Ftp Client
import java.io.*;
import java.net.*;
public class Client13_4 {
int i;
static String iaddr;
static int port;
static String infilename;

public Client13_4() {
try{
Socket socket=new Socket(InetAddress.getByName(iaddr),port);
DataOutputStream outstream = new DataOutputStream(socket.getOutputStream());

FileInputStream fis = new FileInputStream(infilename);
while((i=fis.read()) !=-1)
outstream.writeInt(i);
outstream.writeInt(i);
System.out.println("Data sent to internet successfully!");
socket.close();
}
catch(IOException e){
System.out.println(e.getMessage());
}
}
public static void main(String args[]) {
if (args.length < 3){
System.out.println("USAGE: java Client13_4 [iaddr] [port] [infilename]");
System.exit(1);
}
iaddr = args[0];
port=Integer.parseInt(args[1]);
infilename = args[2];
Client13_4 ClientStart=new Client13_4();
}
}
==============================================================
//FTP server
import java.net.*;
import java.io.*;
public class Server13_4 {
int messagein;
static int port;
static String outfilename;
public Server13_4() {
try{
ServerSocket SS = new ServerSocket(port);
System.out.println("Server is created and waiting Client to connect...");
Socket socket = SS.accept();
System.out.println("Client IP = " +
socket.getInetAddress().getHostAddress());
DataInputStream instream = new DataInputStream(socket.getInputStream());
FileOutputStream fos = new FileOutputStream(outfilename);
while(messagein != -1){
messagein = instream.readInt();
fos.write(messagein);
}
System.out.println("Data written to File successfully!");
}
catch(IOException e){
System.out.println(e.getMessage());
}
}
public static void main(String args[]){
if(args.length < 2){
System.out.println("Usage: java Server13_4 [port] [outfilename]");
System.exit(1);
}
port=Integer.parseInt(args[0]);
outfilename = args[1];
Server13_4 ServerStart=new Server13_4();
}
}
==============================================================


檔案傳輸協定英文File Transfer Protocol,簡稱為FTP)是用於在網路上進行檔案傳輸的一套標準協議。它屬於網路傳輸協定應用層

FTP是一個8位元的用戶端-伺服器協定,能操作任何型別的檔案而不需要進一步處理,就像MIME或Unicode一樣。但是,FTP有著極高的延時,這意味著,從開始請求到第一次接收需求資料之間的時間,會非常長;並且不時的必須執行一些冗長的登陸行程。


3. 何為 url, 什麼是 Domain Name System

統一資源定位符(URL,英語 Uniform / Universal Resource Locator 的縮寫)也被稱為網頁位址,是網際網路上標準的資源的位址(Address)。它最初是由蒂姆·伯納斯-李發明用來作為全球資訊網的位址的。現在它已經被全球資訊網協會編製為網際網路標準RFC1738了。

網域名稱系統英語Domain Name System,縮寫DNS)是網際網路的一項核心服務,它作為可以將域名IP位址相互對映的一個分散式資料庫,能夠使人更方便的存取網際網路,而不用去記住能夠被機器直接讀取的IP數串。

DNS 使用TCPUDP53。


資料來源:維基百科

4. window 之 localhost 如何設定

建議修改C:\windows\system32\drivers\etc\hosts 檔案,加上自訂的伺服器名稱跟127.0.0.1的對應,這樣你在網址列輸入自訂的伺服器名稱時,它就會到127.0.0.1,也就是localhost,然後apache的虛擬伺服器就會接手處理。

利用這個方法,就可以在本地模擬多個網址。

舉例來說,hosts裡面有一條localhost1 127.0.0.1,然後虛擬伺服器設定裡面的ServerName有localhost1,打在瀏覽器網址列打http://localhost1,應該就可以連到你設定的虛擬伺服器。

沒有留言:

張貼留言