1
好吧,基本上我的Flex應用程序將打開一個套接字並在其上偵聽。我的Java程序將寫入一些字符串到這個端口。如何將數據寫入由Flex從Java服務器打開的套接字
我的AS3代碼是
private function onRecvClick():void
{
var host:String = "localhost";
var port:int = 9090;
var socket:Socket = new Socket(host, port);
socket.addEventListener(Event.CONNECT, onConnect);
socket.addEventListener(DataEvent.DATA, onData);
socket.connect(host, port);
}
而且我的Java代碼:
private ClientSocket()
{
try
{
String host = "localhost";
int port = 9090;
Socket socket = openSocket(host, port);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.write("HelloTest");
writer.flush();
}
catch (Exception e)
{
System.out.println(e);
}
}
private Socket openSocket(String server, int port) throws Exception
{
Socket socket;
// create a socket with a timeout
try
{
InetAddress inteAddress = InetAddress.getByName(server);
SocketAddress socketAddress = new InetSocketAddress(inteAddress, port);
// create a socket
socket = new Socket();
// this method will block no more than timeout ms.
int timeoutInMs = 10*1000; // 10 seconds
socket.connect(socketAddress, timeoutInMs);
return socket;
}
catch (SocketTimeoutException ste)
{
System.err.println("Timed out waiting for the socket.");
ste.printStackTrace();
throw ste;
}
}
在試圖寫入套接字,我得到這個java.net.ConnectException: Connection refused: connect
。有趣的是,Flex中的socket
似乎沒有發送任何事件,這是否正常?
好吧,我會將我的Java套接字轉換爲ServerSocket,因爲在sdk 3.0中沒有as3中的ServerSockets。在這種情況下,我可以使用as3中的'socket.connect()'連接到Java Socket嗎? – midhunhk 2011-05-19 11:35:45
是的,這應該工作。對於Java方面,我只是添加了一個簡單的教程/演練的鏈接。 – Mat 2011-05-19 11:38:49
我得到一個'java.net.SocketException:軟件導致連接中止:套接字寫入錯誤',當我嘗試'OutputStream.writeUTF(「你好」);'從ServerSocket。 – midhunhk 2011-05-19 11:40:56