2010-11-30 3 views
0

У меня возникла проблема с использованием сокетов в flash-устройстве 4. Следующий код отправляет набор байтов получающему C# sockerServer. Если я отклоню ошибку, которую я получаю в flash-компоновщике вручную, байты отправляются штрафом, и все это получается на 127.0.0.1:10. Теперь, если бы я мог получить те же результаты без ошибки, отображаемой в Flex.Проблемы с Flex - Socket.close() (# 2031: Ошибка сокета)

Итак, у меня есть два вопроса:

1) Почему это возвращает ошибку, когда я пытаюсь закрыть сокет? См. Ниже описание closeConnection() для контекста. Я попытался смыть его перед тем, что не помогло.

2) Почему ничего не отправляется, когда я использую socket.flush()?

package 
{ 
import flash.events.IOErrorEvent; 
import flash.net.Socket; 
import flash.utils.ByteArray; 

public class socketClient 
{ 
    private var socket:Socket; 
    public function openConnection(address:String, port:int):void 
    { 
     if (socket != null && socket.connected) 
      socket.close(); 

     socket = new Socket(); 
     try { 
      socket.connect(address, port);    
     } 
     catch(e:Error) { }    
    } 
    public function sendProtocol(p:socketProtocol):void { 
     //p.serialize() gets me a bunch of bytes in a ByteArray 
     var buffer:ByteArray = p.serialize(); 
     socket.writeBytes(buffer, 0, buffer.length); 
     //Nothing happens when I flush 
     socket.flush(); 
    } 
    public function closeConnection():void { 
     //As soon as I get to socket.close(), I get this 
     //"Unhandled IOErrorEvent:. text=Error #2031: Socket Error." 
     socket.close(); 
    } 
} 

}

Я использую класс, как это:

var socket:socketClient = new socketClient(); 

//works fine, I see the connection on the server 
socket.openConnection("127.0.0.1", 10); 

//no errors, but nothing sent 
socket.sendProtocol(protocol); 

//returns the error. (if manually dismissed, data is sent) 
socket.closeConnection(); 
+0

Аналогичная проблема: http://stackoverflow.com/questions/3645988/socket-error-sometimes – 2010-11-30 14:46:42

ответ

0

я, наконец, решил ее после того, как ковкой этот, так как я отправил вопрос.

мне пришлось добавить

socket.addEventListener(flash.events.Event.CLOSE, closeHandler) 

и сделать socket.close() оттуда.

 Смежные вопросы

  • Нет связанных вопросов^_^