โปรแกรมจาวา UDPEchoServer
ต่อไปจะเป็นตัวอย่างโปรแกรม UDP ที่เขียนด้วยภาษาจาวาซึ่งจะทำหน้าที่เป็น server โดยที่จะรับข้อความจาก client และตอบกลับไปยัง client ซึ่งโปรแกรมจะมีความแตกต่างกับโปรแกรมแบบ TCP
ในโปรแกรมนี้จะต้องมีการดักจับความผิดพลาดคือ IOException ใน main แทนด้วย SocketException
ตัวอย่างโค้ด
import java.io.*;
import java.net.*;
public class UDPEchoServer
{
private static final int PORT = 1234;
private static DatagramSocket datagramSocket;
private static DatagramPacket inPacket, outPacket;
private static byte[] buffer;
public static void main(String[] args)
{
System.out.println("Opening port...\n");
try
{
datagramSocket =new DatagramSocket(PORT); <strong>//Step 1.</strong>
}
catch(SocketException sockEx)
{
System.out.println("Unable to attach to port!");
System.exit(1);
}
handleClient();
}
private static void handleClient()
{
try
{
String messageIn,messageOut;
int numMessages = 0;
do
{
buffer = new byte[256]; <strong>//Step 2.</strong>
inPacket =new DatagramPacket(buffer, buffer.length); <strong>//Step3.</strong>
datagramSocket.receive(inPacket);<strong>//Step 4.</strong>
InetAddress clientAddress =inPacket.getAddress(); <strong>//Step 5.</strong>
int clientPort =inPacket.getPort(); <strong>//Step 5.</strong>
messageIn =new String(inPacket.getData(),0,inPacket.getLength());
<strong>//Step 6.</strong>
System.out.println("Message received.");
numMessages++;
messageOut = "Message " + numMessages+ ": " + messageIn;
outPacket =new DatagramPacket(messageOut.getBytes(),
messageOut.length(),clientAddress,clientPort); <strong>//Step 7.</strong>
datagramSocket.send(outPacket); <strong>//Step 8.</strong>
}while (true);
}
catch(IOException ioEx)
{
ioEx.printStackTrace();
}
finally //If exception thrown, close connection.
{
System.out.println("\n* Closing connection... *");
datagramSocket.close(); <strong>//Step 9.</strong>
}
}
}
ซึ่งนี้ก็เป็นตัวอย่างโปรแกรมจาวา ซึ่ง UDP นั้นจะไม่มีการเชื่อมจริงระหว่าง server กับ client เหมือนกับการส่งจดหมายแต่ TCP นั้นจะเป็นการส่งที่มีการเชื่อมต่อ เหมือนกับโทรศัพท์
Tags: network programming, udp, จาวา, ภาษาจาวา, โปรแกรมจาวา