1개의 소켓을 열어 12345 port번호를 통해서는 데이터를 수신하면
수신한 데이터를 동일한 multicast ip의 매번 다른 port에 전송하고 싶습니다.
해당 동작 구현 가능한가요?
→ udp소켓을 열어 실행하면 구현 가능할 것 같습니다.
위의 동작 구현을 위해 sendto() 함수를 사용해 sn_dportr 레지스터에 등록된 값을 바꿔보았는데
해당 레시스터를 read하면 변하지 않고 이전에 socket() 함수를 사용하여 등록한 port번호가 유지됩니다.
이유를 알 수 있을까요?
->sendto() 함수를 통해 레지스터 값을 변경할 수 없는 걸로 알고 있습니다. 레지스터 값을 변경하시려면 setSn_DPORTR() 함수를 통해 변경하셔야합니다.
1번 답변의 말씀은 소켓을 총 2개 생성하여 수신용과 송신용 소켓을 구분하여 사용하는 방법을 말씀하시는 건가요?
wiznet에서 제공하는 Libary의 sendto() 함수에서 setSn_DPORTR() 함수가 포함되어 있어 해당 설정을 실행하는데 getSn_DPORTR()함수를 통해 Read하여 확인해보면 변경되어 있지 않습니다.
소켓 생성시에는 해당 함수동작이 적용되는데 sendto() 함수에서는 적용되지 않네요ㅠㅠ…
1번 답변의 말씀은 소켓을 총 2개 생성하여 수신용과 송신용 소켓을 구분하여 사용하는 방법을 말씀하시는 건가요?
→ IP Address와 Port는 하나의 소켓으로 열어야 하기 때문에 수신용과 송신용으로 나눌 수 없습니다.
wiznet에서 제공하는 Libary의 sendto() 함수에서 setSn_DPORTR() 함수가 포함되어 있어 해당 설정을 실행하는데 getSn_DPORTR()함수를 통해 Read하여 확인해보면 변경되어 있지 않습니다.
소켓 생성시에는 해당 함수동작이 적용되는데 sendto() 함수에서는 적용되지 않네요ㅠㅠ…
→ DPORT0과 DPORT1 레지스터에 아래와 같이 설정해보시면 될 것 같습니다 .