網路程式設計 簡易網路程式 2. 簡易線上溝通程式 3. 網路應用程式 4.Servlet 程式設計 5
1. 簡易網路程式 1.1 顯示本地端電腦網路狀態 建立 InetAddress 物件,取得本地端資訊 InetAddress intel = InetAddress.getLocalHost(); 取得電腦名稱 String name = intel.getHostName(); 取得 IP 位址 String ipe = intel.getHostAddress();
1. 簡易網路程式 1.2 查詢連線主機電腦網路狀態 建立 InetAddress 物件,使用 domain name InetAddress intel = InetAddress.getByName(“tw.stock.yahoo.com”); 建立 InetAddress 物件,使用 ip 位址 InetAddress intel = InetAddress.getByName(“ ”); 取得主機名稱 String name = intel.getHostName(); 取得 IP 位址 String ipe = intel.getHostAddress();
2. 簡易線上溝通程式 Winsock 使用的通訊協定 (Protocol) 有兩種 TCP: Transmission Control Protocol – 是一種可靠度較高之通訊協定,當與特定電腦溝 通時,必須取得該電腦之回應,某則會產生錯誤 信息而繼續溝通。使用 TCP 之類別有 URL, URLConnection, Socket 和 ServerSocket 。 UDP: User DataGram Protocol – 是一種可靠度較低之通訊協定,當與特定電腦溝 通時,並不要求接收端的任何檢查動作,是一種 較為簡便之通訊協定。使用 UDP 之類別有 DatagramPacket, DatagramSocket, 和 MulticastSockett 。
2.1 使用 UDP 協定建立連線 首先分別指定通訊電腦之收信息和傳遞信息 之連接阜,例如接收用 901 ,傳送用 902 。 雖然連接阜之編號使用並無特殊規定,但最 好避開下列阜號: (FTP: 21, TELNET: 23, SMTP: 25, GOPHER: 70, HTTP: 80, POP3: 110, NNTP: 119, HTTPS: 443)
2.1 使用 UDP 協定建立連線類別程式 Server 端建立一個等待連線物件 –DatagramSocket sk1 = new DatagramSocket(901); Client 端建立一個連線物件,不需指定阜號 –DatagramSocket sk1 = new DatagramSocket(); Client 傳送信息時之物件建立 –DatagramPacket pk1 = new DatagramPacket(buf, buf.length, addr, 901); 其中 buf 是位元組陣列變數, buf.length 是資料長度, addr 為 Server 端地址,阜號使用 901 。 –Addr 可用 InetAddress addr = InetAddress.getByName(servername); 取得地址資訊
2.1 使用 UDP 協定建立連線類別程式 Client 端之信息傳送使用 send() 方法 –Sk1.send(pk1); Server 接收信息時之物件建立 –DatagramPacket pk2 = new DatagramPacket(buf, buf.length); – 使用 receive() 方法接收來自 Client 端之資料 sk1.receive(pk2); str1 = new String(pk2.getData()); 可用 int port =pk1.getPort(); 取得阜號
2.1 Server 端連線範例程式 c6_02_02a
2.1 Client 端連線範例程式 c6_02_02b
2.1 使用 UDP 協定建立連線類別程式 注意事項 在使用 receive() 方法接收資料時,惠一直等 待接收信息,若通訊雙方同時都使用此方法, 則兩台電腦將一直處於互等狀態,為了避免此 Bug 發生, Srrver 端可先觸發 receive(), 接著在觸 發 send() ;而 Client() 則先觸發 send(), 接著在觸發 receive() 。
2.2 使用 TCP 協定建立連線 Server 端建立連線物件 ( 等待連線,必須指定阜 號 ) –ServerSocket sk1 = new ServerSocket(9999); –Socket insk1 = sk1.accept(); 使伺服端進入等候狀態 Server 端建立連線物件 ( 要求連線,必須指定 Server 端 IP 和阜號 ) –ServerSocket sk2 = new ServerSocket(“server_IP”, 9999);
2.2 使用 TCP 協定建立連線 Client 端傳送信息,使用 PrintWriter 建立輸出 串流物件 PrintWriter out1 = new PrintWriter(sk2.getOutputStream(), true); 使用 write() 和 flush() 傳送資料 out1.write(str1+”\n”); out1.flush();
2.2 使用 TCP 協定建立連線 Server 端接收信息,使用 BufferedReader 建立 輸入串流物件 BufferedReader in1 = new BufferedReader(new InputStreamReader(sk1.get.InputStream())); 使用 readLine() 接收資料 String str1 =in1.readLine();