JAVA SOCKETUDP 1 suboyhotmail com tw PORT Port
JAVA SOCKET(UDP) 1 助教: 廖啟盛 suboy@hotmail. com. tw
各種協定的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 4
SOCKET Application Socket API TCP UDP Network 5
SOCKET Socket在網路應用程式開發上, 大致有下列兩大 類: �Stream Socket Connection-Oriented Protocol TCP �Datagram Socket Connectionless Protocol UDP 6
SOCKET API-- SERVER 所提供的Server端的API函式: Server BSD Socket socket 說明 建立socket bind 設定socket所使用的local端IP位址與通訊埠(Port Number) listen 設定socket等候(listen)Client端連結請求(connection request) accept 接受來自Client端的連結請求, 並且建立socket連結 recv read 接收來自Client端所傳來的資料(TCP) recvfrom 接收來自Client端所傳來的資料(UDP) send write 傳送資料至Client端(TCP) sendto 傳送資料至Client端(UDP) closesocket shutdown 關閉通訊連結及socket, 並且釋放系統資源 關閉socket的傳送與接收的功能 8
SOCKET API-- CLIENT 所提供的Client端的API函式: Client BSD Socket 說明 socket 建立socket connect 建立與Server端的socket連線 recv read 接收來自Server端所傳來的資料(TCP) recvfrom 接收來自Server端所傳來的資料(UDP) send write 傳送資料至Server端(TCP) sendto 傳送資料至Server端(UDP) closesocket 關閉通訊連結及socket, 並且釋放系統資源 shutdown 關閉socket的傳送與接收的功能 9
UDP SOCKET Datagram Socket程式開發流程 Client Server Socket() Bind() Recvfrom() ( Blocking Call ) Processing Sendto() 10 Closesocket()
JAVA SOCKET API Java. net中支援Datagram Socket (UDP) 應用程 式相關的API: Java 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 https: //docs. oracle. com/javase/7/docs/api/ 11
JAVA UDP SOCKET Java Datagram Socket Datagram. Packet Receive ( Blocking Call) send Close 12
使用軟體 具--ECLIPSE 網址 : http: //www. eclipse. org/downloads/ 13
DEMO
範例程式—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; //設server 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 需要設server port socket. receive(packet); //接收封包 msg=new String(buffer, 0, packet. get. Length()); //將訊息轉為字串 System. out. println("收到下面的訊息 : " + msg); //print出的文字訊息 socket. close(); //關閉socket 15
範例程式—UDP CLIENT public static void main(String args[]) throws Exception { int port. No =5555; //設server 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(); int o. Length=msg. length(); byte buffer[]=new byte[o. Length]; buffer=msg. get. Bytes(); //使用平臺的預設字元集將此 String 編碼為 byte 序列,並將結果存儲 到一個新的 byte 陣列中。 //讀UIP中的訊息 //將訊息長度大小放到o. Length Datagram. Packet packet= new Datagram. Packet(buffer, o. Length, addr, port. No); //訊息封包(值, 大小, server位址, server port) Datagram. Socket socket=new Datagram. Socket(); //建立socket. send(packet); socket. close(); //送出packet封包訊息 //關閉socket 16
範例程式—執行結果 UDP Server UDP Client 17
- Slides: 18