서버 : 자바 -> 받는 것만 됨
클라 : 플렉스 -> 받는거 보내는거 다됨

기억이 가물 가물해서 자바는 소스가 좀 ;; 크라이언트 소켓 테스트 하는데는 문제 없으므로 테스트용으로 사용하세요. -_-;

 import java.net.*;

import java.io.*;


//테스트용임 .....  


public class TestServer extends Thread{
    private BufferedReader recv_msg = null;
    private Socket soc = null;
    
    public TestServer(){
        ServerSocket server = null;
        try {
            server = new ServerSocket (300);
        } catch (IOException e1) {
            e1.printStackTrace();
        }

        System.out.println ("Server Running");
        
        
        
        while (true) {

            try{
                soc = server.accept();
                System.out.println(soc.toString());
                recv_msg = new BufferedReader(new InputStreamReader(soc.getInputStream()));                
                recv_message rm = new recv_message();
                rm.start();                
            }catch (Exception e) {
                e.printStackTrace();
            }            
        }
        
    }

    public class recv_message extends Thread{
        public void run(){
            while(true){
                if(soc==null) return;
                try {
                    String msg = recv_msg.readLine().trim();
                    System.out.println("size : ["+msg.length()+"]"+msg.trim());
                    if(msg.equals("exit")){
                        System.out.println("종료");
                        soc.close();
                        soc=null;                                        
                    }
                } catch (Exception e) {                    
                    e.printStackTrace();
                }



                try{
                    Thread.sleep(200);
                }catch(Exception e){
                    
                }
                
            }
        }
    }
    
    
    public static void main (String args[]) throws Exception{
        new TestServer();
    }
}


 <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
        <![CDATA[
            import mx.formatters.SwitchSymbolFormatter;
            import mx.controls.Alert;      
            import flash.net.Socket;
           
            public var m_socket:Socket = new Socket();
           
            public function connect():void{
                if(m_socket.connected == false){
                    trace("연결 : 연결시도");
                    m_socket.connect("localhost", 300);
                    m_socket.addEventListener(ProgressEvent.SOCKET_DATA,rcvHandler);
                    m_socket.addEventListener(IOErrorEvent.IO_ERROR,ioHandler);
                }else{
                    trace("연결 : 이미 연결되어 있음.");
                }
            }
           
            public function close():void{
                if(m_socket.connected == true){
                    trace("종료 : 연결을 종료 합니다.");
                    m_socket.writeUTFBytes("exit\n");
                    m_socket.flush();
                    m_socket.close();
                }else{
                    trace("종료 : 연결되어 있지 않음.");
                }
            }
           
            public function sendData():void
            {
                if(m_socket.connected == true)
                {
                    var bytes:ByteArray = new ByteArray();
                    bytes.writeUTFBytes(txtData.text+"\n");
                    bytes.position = 0;
                    
                    m_socket.writeBytes(bytes,0,bytes.length);
                    trace("메시지 : "+txtData.text);
                    m_socket.flush();
//                    m_socket.writeUTFBytes( txtData.text);
                    
                    txtData.text = "";
                }
                else
                {
                    Alert.show("연결되지 않았음");
                }
            }
            
            private function sndMsg(evt:KeyboardEvent):void{
                switch(evt.keyCode){
                    case Keyboard.ENTER:
                        sendData();
                    break;
                }
            }
            
            private function ioHandler(evt:IOErrorEvent):void{
                trace("io error");
            }
            
            private function rcvHandler(evt:ProgressEvent):void{
                trace("socketDataHandler: " + evt);
                readResponse();
            }
            
            private function readResponse():void{
                var str:String = m_socket.readUTFBytes(m_socket.bytesAvailable);
                txtRead.text += str;
            }
           
        ]]>
    </mx:Script>
    <mx:VBox width="237" height="138">
        <mx:HBox>
            <mx:Button label="connect" click="connect()"/>           
            <mx:Button label="close" click="close()" />
        </mx:HBox>

        <mx:HBox>
            <mx:TextInput id="txtData" keyDown="sndMsg(event)"/>
            <mx:Button label="send" click="sendData()"/>       
        </mx:HBox>       
        <mx:TextArea width="100%" height="100%" id="txtRead"/>
    </mx:VBox>
</mx:Application>


+ Recent posts