2012-02-04 2 views
1

C#의 서브넷에있는 모든 IP에 짧은 메시지를 보내려고합니다. 나는 TCPClient를 사용하고 있는데 문제는 그 IP를 사용하는 것이 없다면 TCPClient.Connect() 함수가 20 초 동안 예외를 던져 버린다는 것입니다. 가능하다면 몇 밀리 초 정도의 무언가를 기대하고 있습니다.C#의 여러 IP 주소로 브로드 캐스트

필자가 정말로 원하는 것은 각 주소에 몇 바이트를 보내고 특정 주소에서 ACK를 수신하는 것입니다. 명시 적으로 Connect(), TCPClient를 사용하지 않고이 작업을 수행하는 방법이 있거나 심지어 내가 알지 못하는 Connection timeout을 설정하는 경우에도 대신 쉽게 전환 할 수 있습니다.

이 프로그램을 여러 컴퓨터에서 실행하려고하는데이 브로드 캐스트는 각 인스턴스가 다른 인스턴스의 IP를 알 수 있도록 사용됩니다. 따라서 필요한 것은 식별을 위해 2 바이트를 보내는 것입니다.

+0

UDP를 사용할 수 있습니까? 어떤 유형의 메시지를 보내야합니까? [C# 소켓 연결 제한 시간] (http://stackoverflow.com/questions/1062035/how-to-config-socket-connect-timeout-in-c-sharp) – drew010

+0

그래, UDP를 사용할 수 있습니다. 몇 바이트 만 보내면됩니다. 더 빠릅니까? – user912447

답변

4

대신 UDP 주소로 브로드 캐스팅하지 마세요. 클라이언트가 해당 주소로 수신 대기중인 경우 (TCP와 같은 보장은 아니지만) 메시지를 받게됩니다. 그렇지 않은 경우 방송사는 상관하지 않습니다. 그것은 당신이 필요로하는 것처럼 들리는데 그것은 시나리오를 듣는 모든 사람에게 더 많은 방송인 UDP입니다.

+0

좋습니다. UPD가 연결하거나 연결 실패를보고합니다. – user912447

+1

@ user912447 아니오; UDP에는 * no * 연결이 있습니다. 데이터를 "발사하고 잊어 버리십시오". –

+0

아름다운. 나는 그때 같이 갈 것이라고 생각합니다. 매우 감사. – user912447

1

응답이 실제로 필요한지 또는 프로그램으로 돌아 가기 위해 제어가 필요한지 여부에 따라 비동기 적으로 수행 할 수 있습니다.

관련 문제