下面的代码演示了一个用 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 文件可以位于本地计算机或网络上的任何位置,不需要放置在 Web 服务器的根目录中。
如果由于文件没有位于 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 对象,并将内容发送到 XMLSocket 服务器(后跟零 (0) 字节):
xmlsock.send(xmlFormattedData);
XMLSocket.send() 方法不返回指示数据是否成功传输的值。如果尝试发送数据时发生错误,将引发 IOError 错误。
发送到 XML 套接字服务器的每条消息必须以换行符 (
\n) 结束。
有关详细信息,请参阅 XMLSocket。