???在ACE中,這個問題好像比較晦澀。

???我所遇到過的問題是在ACE_SOCK_Dgram_Bcast的第4個構造參數reuse_addr賦值為1,但很遺憾,在Windows平臺上,就是不能使端口重用生效。使用setsockopt來強制服用端口,仍然無效;用ACE_SOCK_Dgram也試過了,同樣無效。ACE的代碼中如是說:

// If we are using winsock2 then the SO_REUSEADDR feature is broken
// SO_REUSEADDR=1 behaves like SO_REUSEPORT=1. (SO_REUSEPORT is an
// extension to sockets on some platforms)
// We define SO_REUSEPORT here so that ACE_OS::setsockopt() can still
// allow the user to specify that a socketaddr can *always* be reused.
???????????????????????????????????????????????????????????????????????????????——"config-win32-common.h"

???在Winsock2中不支持SO_REUSEADDR,?可是我要用的只是端口重用而已。

???不過ACE_SOCK_Dgram_Mcast倒是有效,可惜,不是一個概念。

???我后來用很不爽的辦法才應付過去,用socket函數先創建好SOCKET句柄后,再用ACE_SOCK_Dgram::set_handle設置。挺郁悶的,不知道有沒有好的方法能解決或解釋。