//服務器端
import java.net.*;
import java.io.*;
public class TestUDPServer{
public static void main(String args[])throws Exception
{
byte buf[]= new byte[1024];
//數據報包用來實現無連接包投遞服務
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//數據報套接字是包投遞服務的發送或接收點
DatagramSocket ds = new DatagramSocket(8888);
while(true)
{
//從此套接字接收數據報包
ds.receive(dp);
ByteArrayInputStream bais = new ByteArrayInputStream(buf);
DataInputStream dis = new DataInputStream(bais);
//從包含的輸入流中讀取此操作需要的字節
System.out.println(dis.readLong());
}
}
}
//客戶端
import java.net.*;
import java.io.*;
public class TestUDPClient
{
public static void main(String args[])throws Exception
{
//定義一個Long類型的數據
long n= 10000L;
//聲明一個輸出管道
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//數據輸出流允許應用程序以適當方式將基本 Java 數據類型寫入輸出流中
DataOutputStream dos = new DataOutputStream(baos);
//將一個 long 值以 8-byte 值形式寫入基礎輸出流中,先寫入高字節。如果沒有拋出異常,則計數器 written 增加 8。
dos.writeLong(n);
//創建一個新分配的 byte 數組。其大小是此輸出流的當前大小,并且緩沖區的有效內容已復制到該數組中。
byte[] buf = baos.toByteArray();1
//構造數據報包,用來將長度為 length 的包發送到指定主機上的指定端口號。length 參數必須小于等于 buf.length。
DatagramPacket dp = new DatagramPacket(buf,buf.length,new InetSocketAddress("127.0.0.1",8888));
DatagramSocket ds = new DatagramSocket(6666);
//從此套接字發送數據報包
ds.send(dp);
//關閉此數據報套接字
ds.close();
}
}
posted on 2009-05-17 09:29
Werther 閱讀(313)
評論(0) 編輯 收藏 所屬分類:
10.Java