2011-05-19 19 views
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似乎沒有發送任何事件,這是否正常?

回答

4

除非我完全誤讀文檔,否則flash.net.Socketjava.net.Socket都是客戶端套接字。

您需要一面是服務器套接字才能將它們連接在一起。

對於Java中的服務器端,請看這個演練:Socket Communications

+0

好吧,我會將我的Java套接字轉換爲ServerSocket,因爲在sdk 3.0中沒有as3中的ServerSockets。在這種情況下,我可以使用as3中的'socket.connect()'連接到Java Socket嗎? – midhunhk 2011-05-19 11:35:45

+1

是的,這應該工作。對於Java方面,我只是添加了一個簡單的教程/演練的鏈接。 – Mat 2011-05-19 11:38:49

+0

我得到一個'java.net.SocketException:軟件導致連接中止:套接字寫入錯誤',當我嘗試'OutputStream.writeUTF(「你好」);'從ServerSocket。 – midhunhk 2011-05-19 11:40:56

相關問題