Example #1
0
    public static void Main()
    {
        TcpClient     server = new TcpClient("127.0.0.1", 7000); // 서버에 접속
        NetworkStream ns     = server.GetStream();               // NetworkStream 얻기

        SerialExample ex1 = new SerialExample();                 // 직렬화 인스턴스 생성

        ex1.id   = 1;
        ex1.name = "홍길동";
        ex1.kor  = 80;
        ex1.math = 50;
        ex1.eng  = 100;

        IFormatter   formatter = new SoapFormatter(); // IFormatter 생성
        MemoryStream strm      = new MemoryStream();  // 메모리 스트림 생성

        formatter.Serialize(strm, ex1);               // 메모리 스트림에 직렬화 인스턴스 생성

        byte[] data      = strm.GetBuffer();
        int    data_size = (int)strm.Length;

        byte[] size = BitConverter.GetBytes(data_size); // 메모리 스트림 전체 크기전송

        ns.Write(size, 0, 4);                           // 전송할 데이터 사이즈 전송
        ns.Write(data, 0, data_size);                   // 메모리 스트림에 있는 데이터 전송
        ns.Flush();

        strm.Close();
        ns.Close();
        server.Close();
    }
    public static void Main()
    {
        TcpClient server = new TcpClient("127.0.0.1", 7000);  // 서버에 접속
        NetworkStream ns = server.GetStream();               // NetworkStream 얻기

        SerialExample ex1 = new SerialExample();             // 직렬화 인스턴스 생성
        ex1.id = 1;
        ex1.name = "홍길동";
        ex1.kor = 80;
        ex1.math = 50;
        ex1.eng = 100;

        IFormatter formatter = new SoapFormatter();   // IFormatter 생성
        MemoryStream strm = new MemoryStream();   // 메모리 스트림 생성

        formatter.Serialize(strm, ex1);    // 메모리 스트림에 직렬화 인스턴스 생성

        byte[] data = strm.GetBuffer();
        int data_size = (int)strm.Length;
        byte[] size = BitConverter.GetBytes(data_size);  // 메모리 스트림 전체 크기전송

        ns.Write(size, 0, 4);              // 전송할 데이터 사이즈 전송
        ns.Write(data, 0, data_size);      // 메모리 스트림에 있는 데이터 전송
        ns.Flush();

        strm.Close();
        ns.Close();
        server.Close();
    }
Example #3
0
    public static void Main()
    {
        TcpListener server = new TcpListener(7000);  // TCP 7000번 포트 열기

        server.Start();

        TcpClient     client = server.AcceptTcpClient(); // 외부에서 클라이언트 접속하면
        NetworkStream ns     = client.GetStream();       // NetworkStream 객체를 얻어옴

        MemoryStream strm = new MemoryStream();          // 메모리 스트림 생성

        byte[] data      = new byte[4];
        int    recv_size = ns.Read(data, 0, 4);   // 수신할 스트림 데이터 크기 알아내기
        int    size      = BitConverter.ToInt32(data, 0);

        int receive = 0;

        while (size > 0)  // 상대방이 보낸 직렬화 스트림 읽기
        {
            data      = new byte[1024];
            recv_size = ns.Read(data, 0, size);
            strm.Write(data, receive, recv_size);
            receive += recv_size;
            size    -= recv_size;
        }

        strm.Position = 0;
        IFormatter formatter = new SoapFormatter();
        // 직렬화 인스턴스 복원
        SerialExample ex1 = (SerialExample)formatter.Deserialize(strm);

        Console.WriteLine("ex1.id= " + ex1.id + " ex1.name= " + ex1.name);
        Console.WriteLine("ex1.kor=" + ex1.kor + " ex1.math=" + ex1.math + " ex1.eng=" + ex1.eng);
        Console.WriteLine("ex1.date  =" + ex1.date.ToString());

        strm.Close();
        ns.Close();
        client.Close();
        server.Stop();
    }