개발언어/C#

c# TCP 파일 전송 프로그램

1동민1 2020. 2. 28. 18:01
반응형

주요 소스 정리

Tcp 소켓 오픈 소스

private void TcpSocketOpen()
        {
            try
            {
                receiveSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 2020);          //2020포트의 서버를 연다.
                receiveSocket.Bind(endPoint);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

Tcp 소켓 연결 소스

private void TcpSocketConnect()
        {
            if (conCheck) return; //연결 되어 있으면 재연결 안함
            try
            {
                sendSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                sendSocket.Connect(IPAddress.Parse(textBox1.Text), 2020);  //2020포트의 서버에 연결
                //sendSocket.ReceiveTimeout = 5000;
                conCheck = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                button2.Enabled = false;
            }
        }

Tcp 소켓 수신 대기 소스

private void Listen()
        {
            if (listenCheck) return;  //연결 되어 있으면 재연결 안함
            try
            {
                receiveSocket.Listen(20);
                receiveSocket = receiveSocket.Accept();

                listenThread = new Thread(Receive_Data);   //실제 통신을 담당하는 쓰레드 생성
                listenThread.Start();
                listenCheck = true;
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
                button3.Enabled = true;
                if(listenCheck)
                    listenCheck = false;
            }
        }

RTP헤더는 추가하지 않았고

파일 이름 사이즈, 파일 이름, 파일 크기 <- 헤더로 사용하고

파일 내용물이 맨 뒤에 붙게 만들었다.

클라이언트 하나로 송수신이 가능하게 만들었고 같은 네트워크 대역대에 있는 컴퓨터만 연결 가능하다.

서버를 사용하면 데몬을 통해 송수신하면 될 것 같다.

FileTranfer.zip
0.22MB

내가 직접 만든거라 바이러스는 절대 없음.

반응형