클라이언트입니다.
그냥 Socket이랑 조금 틀립니다.
그냥 소켓은 데이터를 받을 때에
socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
를 등록해서 데이터가 들어오면 함수가 호출되도록 되어 있습니다.
그리고 보낼 때에도 writeUTF어쩌구로 보냅니다.
근데 XMLSocket은 더 간단하게 주고 받을 수 있습니다.
XMLSocket은 저 아래에있는 이벤트를 등록합니다.
xmlsocket.addEventListener(DataEvent.DATA, socketDataHandler);
그리고, 저 함수에서 DataEvent에 있는 data값에 데이터가 들어있습니다.
그냥 출력해주면 돼요-_-;
보낼 때에는 XMLSocket에 있는 send메소드를 이용해서 그냥 보내면 돼요. 아주 간단해요!
클라이언트(FLEX)
[code]
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="initApp()">
<mx:Script>
<![CDATA[
private var xmlsocket:XMLSocket;
[Bindable]
public var userId:String;
private function initApp():void {
currentState = "logon";
}
public function logon():void {
userId = tUserId.text;
xmlsocket = new XMLSocket();
xmlsocket.addEventListener(DataEvent.DATA, socketDataHandler);
xmlsocket.connect("localhost", 10001);
xmlsocket.send(userId + "\n");
currentState = "chat";
}
private function socketDataHandler(event:DataEvent) :void {
log.text += event.data;
}
public function send():void {
xmlsocket.send(msg.text + "\n");
msg.text = "";
}
]]>
</mx:Script>
<mx:Panel id="panel" width="100%" height="100%" verticalAlign="middle"
horizontalAlign="center">
<mx:ControlBar id="cb" height="44" />
</mx:Panel>
<mx:states>
<mx:State name="logon">
<mx:AddChild relativeTo="{panel}">
<mx:HBox>
<mx:Label text="User Id:" />
<mx:TextInput id="tUserId" enter="logon()" />
<mx:Button label="Logon" click="logon()" />
</mx:HBox>
</mx:AddChild>
</mx:State>
<mx:State name="chat">
<mx:SetProperty target="{panel}" name="title"
value="접속자 ID : [{userId}]" />
<mx:AddChild relativeTo="{panel}">
<mx:TextArea id="log" width="100%" height="100%" editable="false"
updateComplete="log.verticalScrollPosition=log.maxVerticalScrollPosition;"/>
</mx:AddChild>
<mx:AddChild relativeTo="{cb}">
<mx:HBox width="100%" paddingTop="0" paddingBottom="0">
<mx:TextInput id="msg" enter="send()" width="100%" />
</mx:HBox>
</mx:AddChild>
</mx:State>
</mx:states>
</mx:Application>
[/code]