게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[c#] 브로드캐스트..
게시물ID : programmer_6327짧은주소 복사하기
작성자 : 달려라하니~
추천 : 0
조회수 : 1459회
댓글수 : 1개
등록시간 : 2014/11/03 21:08:38
옵션
  • 본인삭제금지
각 노드에 있는 장치의 ip를 서치하기 위해 UDP/브로드캐스트로 송신합니다.
그럼 각 노드가 응답을 하는데 하나만 수신이 되는군요.
현재는 노드 2대만 가지고 테스트 하는데 두번째로 응답하는 노드의 데이터만 수신됩니다.
각 노드가 거의 동시에 응답하면 각 노드의 데이터가 줄줄이 들어올줄 알았는데 그렇지 않는군요.
이걸 어떻게 해결해야할까요? 
이더리얼로 두개의 노드가 응답하는건 확인 했습니다.  그런데 늦게 응답한 노드의 데이터만 들어오네요.
 
 
        //------------------------------IP 서치
        private void ipSearchBtn_Click(object sender, EventArgs e)
        {
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            s.EnableBroadcast = true;
            byte[] sendbuf = Encoding.ASCII.GetBytes("FDSearch");
            EndPoint targetEndPoint = new IPEndPoint(IPAddress.Broadcast, 3001);
            // UDP 브로드캐스팅 패킷을 네트워크에 전송
            s.SendTo(sendbuf, targetEndPoint);  <--각 노드로 송신
            var arg = new SocketAsyncEventArgs();
            arg.Completed += ReceiveAsync_Completed;
            arg.SetBuffer(new byte[4096], 0, 4096);
            // 비동기 방식의 수신 메소드 호출
            s.ReceiveAsync(arg);
            this.Text = "";
        }
        private void ReceiveAsync_Completed(object sender, SocketAsyncEventArgs e)
        {
            if (e.Buffer.Length == 0)
            {
                return;
            }
            // 수신이 완료되었을 때 호출되는 메소드
            string txt = Encoding.UTF8.GetString(e.Buffer);  <-- 두개의 노드중에 하나만 수신됩니다.
.
.
.
.
        }
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호