あと、基本を勘違いしてそうだな。
1方向の1通信で、送信元ポートと送信先ポートがあるんだぞ。

サーバ側プログラムでrecvfrom 呼ぶときお前が指定すべきなのは、クライアント側の送信元ポート。どの送信元ポートでも受け付けるならanyaddrを指定する。

呼んだあとで取得できるのは、サーバのどのポートに届いたか(送信先ポート)であって、送信元ポートじゃない。普通はbind済みで自明なので、そんなの見る必要ない。