下列程式碼將示範如何以 Java 撰寫一個簡單的 XMLSocket 伺服器,它會接受傳入的連線,並在命令提示視窗中顯示收到的訊息。雖然您可以在透過命令列啟動伺服器時,指定不同的埠號,但根據預設,新的伺服器會建立在本機電腦的連接埠 8080 上。
建立新的文字文件,並在其中加入下列程式碼:
import java.io.*;
import java.net.*;
class SimpleServer
{
private static SimpleServer server;
ServerSocket socket;
Socket incoming;
BufferedReader readerIn;
PrintStream printOut;
public static void main(String[] args)
{
int port = 8080;
try
{
port = Integer.parseInt(args[0]);
}
catch (ArrayIndexOutOfBoundsException e)
{
// Catch exception and keep going.
}
server = new SimpleServer(port);
}
private SimpleServer(int port)
{
System.out.println(">> Starting SimpleServer");
try
{
socket = new ServerSocket(port);
incoming = socket.accept();
readerIn = new BufferedReader(new InputStreamReader(incoming.getInputStream()));
printOut = new PrintStream(incoming.getOutputStream());
printOut.println("Enter EXIT to exit.\r");
out("Enter EXIT to exit.\r");
boolean done = false;
while (!done)
{
String str = readerIn.readLine();
if (str == null)
{
done = true;
}
else
{
out("Echo: " + str + "\r");
if(str.trim().equals("EXIT"))
{
done = true;
}
}
incoming.close();
}
}
catch (Exception e)
{
System.out.println(e);
}
}
private void out(String str)
{
printOut.println(str);
System.out.println(str);
}
}
將文件儲存到硬碟並命名為 SimpleServer.java,然後使用 Java 編譯器加以編譯,以建立名為 SimpleServer.class 的 Java 類別檔案。
開啟命令列提示,並輸入
java SimpleServer
,就可以啟動 XMLSocket 伺服器。SimpleServer.class 檔案可以位於本機電腦或網路上的任何位置,不一定要放在網站伺服器的根目錄下。
如果因為檔案不在 Java 類別路徑內而無法啟動伺服器,請嘗試使用
java -classpath .SimpleServer
來啟動伺服器。
若要從 應用程式連線至 XMLSocket,必須先建立 XMLSocket 類別的新實體,然後在傳遞主機名稱和埠號期間呼叫
XMLSocket.connect()
方法,如下所示:
var xmlsock:XMLSocket = new XMLSocket();
xmlsock.connect("127.0.0.1", 8080);
每當您從伺服器接收資料,就會傳送
data
事件 (
flash.events.DataEvent.DATA
):
xmlsock.addEventListener(DataEvent.DATA, onData);
private function onData(event:DataEvent):void
{
trace("[" + event.type + "] " + event.data);
}
若要將資料傳送至 XMLSocket 伺服器,請使用
XMLSocket.send()
方法並傳遞 XML 物件或字串。Flash Player 會將所提供的參數轉換成 String 物件,並在內容後面加上零 (0) 位元組後傳送到 XMLSocket 伺服器:
xmlsock.send(xmlFormattedData);
XMLSocket.send()
方法並不會傳回值來指出資料是否已傳輸成功。如果在傳送資料時發生錯誤,就會擲出 IOError 錯誤。
傳送到 XML 通訊端伺服器的每項訊息都必須以換行 (
\n
) 字元做為結尾。
如需詳細資訊,請參閱
XMLSocket
。