202133 JAVA SOCKETUDP 1 PORT Port number Transport
2021/3/3 JAVA SOCKET(UDP) 1
各種協定的PORT (通訊埠) Port number Transport 協定 DHCP 67(server) / 68(client) UDP DNS 53 TCP/UDP FTP 21(control) / 20(data) TCP HTTP 80 TCP/UDP SMTP 25 TCP Telnet 23 TCP POP 3 110 TCP 2021/3/3 協定 4
SOCKET 2021/3/3 Application Socket API TCP UDP Network 6
SOCKET 2021/3/3 Socket在網路應用程式開發上, 大致有下列兩大 類: �Stream Socket (Connection-Oriented Protocol) TCP �Datagram Socket (connectionless Protocol) UDP 7
SOCKET API-- SERVER 2021/3/3 所提供的Server端的API函式: Server BSD Socket socket 說明 建立socket bind 設定socket所使用的local端IP位址與通訊埠 listen 設定socket等候(listen)Client端連結請求(connection request) accept 接受來自Client端的連結請求, 並且建立socket連結 recv read (TCP)接收來自Client端所傳來的資料 recvfrom (UDP)接收來自Client端所傳來的資料 send write (TCP)傳送資料至Client端 sendto (UDP)傳送資料至Client端 closesocket shutdown 關閉通訊連結及socket, 並且釋放系統資源 關閉socket的傳送與接收的功能 8
SOCKET API-- CLIENT 2021/3/3 所提供的Client端的API函式: Client BSD Socket socket connect 說明 建立socket 建立與Server端的socket連線 recv read (TCP)接收來自Server端所傳來的資料 recvfrom (UDP)接收來自Server端所傳來的資料 send write (TCP)傳送資料至Server端 sendto (UDP)傳送資料至Server端 closesocket shutdown 關閉通訊連結及socket, 並且釋放系統資源 關閉socket的傳送與接收的功能 9
UDP SOCKET Socket程式開發流程 2021/3/3 Datagram Socket() Bind() Recvfrom() ( Blocking Call ) Sendto() Closesocket() 10
JAVA SOCKET API Java API 2021/3/3 Java. net中支援Datagram Socket (UDP) 應用程 式相關的API: 說明 Java. net. Datagram. Socket 建立Datagram socket Java. net. Datagram. Packet 建立Datagram packet(資料封包) Receive (Datagram. Socket) 接收Datagram packet(資料封包) Send (Datagram. Socket) 傳送Datagram packet(資料封包) Close 關閉Datagram socket Java API : http: //nothing. tw/JDK_API_1_6/overview-summary. html 11
JAVA UDP SOCKET Java Datagram Socket 2021/3/3 Datagram. Socket Datagram. Packet receive ( Blocking Call) send Close 12
使用軟體 具--ECLIPSE 網址 : http: //www. eclipse. org/downloads/ 2021/3/3 13
使用軟體 具--ECLIPSE 2021/3/3 14
使用軟體 具--ECLIPSE 2021/3/3 15
使用軟體 具--ECLIPSE 2021/3/3 16
使用軟體 具--ECLIPSE 2021/3/3 17
使用軟體 具--ECLIPSE 2021/3/3 18
使用軟體 具--ECLIPSE 2021/3/3 19
使用軟體 具--ECLIPSE 2021/3/3 20
使用軟體 具--ECLIPSE 2021/3/3 21
使用軟體 具--ECLIPSE 2021/3/3 22
使用軟體 具--ECLIPSE 2021/3/3 23
使用軟體 具--ECLIPSE 2021/3/3 24
使用軟體 具--ECLIPSE 2021/3/3 25
範例程式—UDP SERVER public class Server { public static void main(String args[]) throws Exception { byte buffer[]=new byte[10]; //buffer是 10 byte的陣列 String msg; int port. No=5555; //設port System. out. println("Server端開始接受連線請求!"); //print出的文字訊息 for (; ; ) { Datagram. Packet packet = new Datagram. Packet(buffer, buffer. length); //建立Datagram packet資料封包, 限制packet值和長度大小 Datagram. Socket socket=new Datagram. Socket(port. No); //建立socket 需要設port socket. receive(packet); //接收封包 msg=new String(buffer, 0, packet. get. Length()); //將訊息轉為字串 System. out. println("收到下面的訊息 : " + msg); //print出的文字訊息 socket. close(); //關閉socket 2021/3/3 26
範例程式—UDP CLIENT public static void main(String args[]) throws Exception { 2021/3/3 int port. No =5555; //設port System. out. print("Please input the IP address of destination : "); //print出的文字訊息 Buffered. Reader uip= new Buffered. Reader(new Input. Stream. Reader(System. in)); //輸入到buffer的字串存到UIP中, 並讀出UIP中buffer的內容 String Server. IP=uip. read. Line(); //將UIP內容讀到Server. IP Inet. Address addr=Inet. Address. get. By. Name(Server. IP); //抓出Server. IP位址 while (true) { // 一直回傳新訊息 System. out. print("輸入送出的訊息 : "); String msg=uip. read. Line(); //讀UIP中的訊息 int o. Length=msg. length(); //將訊息長度大小放到o. Length byte buffer[]=new byte[o. Length]; buffer=msg. get. Bytes(); Datagram. Packet packet= new Datagram. Packet(buffer, o. Length, addr, port. No); //訊息封包(值, 大小, 位址, port) Datagram. Socket socket=new Datagram. Socket(); //建立socket. send(packet); socket. close(); //送出packet封包訊息 //關閉socket 27
範例程式—執行結果 UDP Server UDP Client 2021/3/3 28
- Slides: 28