자바 소켓 바이트 통신 중, 값이 제대로 전달이 안됩니다.

조회수 9136회

바이트 통신 중, 값을 제대로 받아오지 못하는 것인지 값이 제대로 전달이 안되는 것인지.. 알 수 없는 문제가 발생하였습니다.

아래는 클라이언트 소스코드입니다.

            Socket soc = new Socket("127.0.0.1", 7824);

            InputStream is = new BufferedInputStream(soc.getInputStream());
            BufferedOutputStream os = new BufferedOutputStream(soc.getOutputStream());

            os.write(("asff").getBytes());
            os.flush();

            os.write(("f12312").getBytes());
            os.flush();

            System.out.println("소켓 오픈.");

아래는 서버 소스코드의 일부분 입니다.

                in = socket.getInputStream();
                out = socket.getOutputStream();

                handler = new PacketHandler(socket, in, out);
    private BufferedInputStream in;
    private BufferedOutputStream out;

    public PacketHandler(Socket soc, InputStream in, OutputStream out) {
        this.soc = soc;
        this.in = new BufferedInputStream(in);
        this.out = new BufferedOutputStream(out);
    }
    public synchronized byte[] readPacket() {
        byte[] packet = null;
        try {
            System.out.println(in.available());
            packet = new byte[in.available()];
            for (int pos = 0; pos < in.available(); pos++) {
                packet[pos] = (byte) (in.read());
            }
        } catch (IOException e) {
        }
        return packet;
    }

아래는 문제의 사진입니다.

alt text

이런 식의 통신은 처음이라, 어떻게 처리해야 좋을지 모르겠습니다..

귀한 시간 내주셔서 감사합니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 간단한 TCP/IP 통신 예제 입니다.

    서버

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.BufferedReader;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class TcpIpServer{
    
        public static void main(String[] args){
            ServerSocket ss;
            Socket sc;
    
            BufferedReader in;
            PrintWriter out;
    
    
            try{
                ss= new ServerSocket(6666);
    
                sc= ss.accept();
                System.out.println(sc.getInetAddress()+"와 연결되었습니다.");
    
                in = new BufferedReader(new InputStreamReader(sc.getInputStream()));
                out = new PrintWriter(sc.getOutputStream(),true);
                String inLine = "bcbcbcb";
                System.out.println("수신 : " + inLine);
                out.println(inLine);
                System.out.println("송신:"+inLine);
    
                in.close();
                out.close();
                sc.close();
                ss.close();
            }catch(IOException ex){
                ex.printStackTrace();
            }
        }
    }
    

    클라이언트

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.BufferedReader;
    import java.io.DataInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    
    
    public class TcpIpClient {
       public static void main(String[] args) {
           Socket sc;
           BufferedReader in;
           PrintWriter out;
           String outLine = "aaaaaa";
           String inLine = null;
           String host="127.0.0.1";
    
           try{
               sc=new Socket(host,6666);
               out=new PrintWriter(sc.getOutputStream(),true);
               in = new BufferedReader(new InputStreamReader(sc.getInputStream()));
               System.out.println("송신:"+outLine);
               inLine="adbfdaba";
               System.out.println("수신:"+inLine);
               in.close();
               out.close();
               sc.close();
           }catch(IOException ex){
               ex.printStackTrace();
           }
        }
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)