我不知道大家有沒有碰到過這樣的問題,**如下:
ace_asynch_acceptoracceptor;
ace_i***_addr addr= ace_i***_addr("hastatus");
if (acceptor.open (addr,
initial_read_size,
1) == -1)
return -1;
可是怎麼樣才能獲得監聽的埠號呢?我折騰了乙個下午,才終於解決
首先,我試著通過winsocket api直接操作來取到埠號,因為 acceptor物件提供了乙個get_handler()方法
sockaddr_in addr1;
int addr1len=sizeof(struct sockaddr);
if(ace_os::getsockname(acceptor.get_handle(),(sockaddr *)&addr1,&addr1len)!=0)
ace_debug ((lm_debug,"port:%d /n",addr1.sin_port ));
**執行正確,埠號也出現在了控制台,可是是乙個無效的埠號,也就是說上面**獲得埠是錯誤的
在網上通過關鍵字尋找了n久,直到偶然發現ace自帶的乙個類也呼叫了getsockname sockaddr等方法和結構,才總算解決這個問題
**如下:
ace_sock_seqpack_association a=ace_sock_seqpack_association(acceptor.get_handle());
size_t addr_size=1;
a.get_local_addrs(&addr,addr_size);
ace_debug ((lm_debug,"port:%d/n",addr.get_port_number()));
這才是真正的在監聽的埠號
就差一點想放棄了,可是還是沒放棄
動態分配的陣列使用sizeof
include include include int main int b b int malloc 5 sizeof int malloc需要呼叫memset b,0,5 sizeof int memset需要呼叫printf sizeof a d n sizeof a printf sizeo...
assign 的動態分配
1 通過變數名動態訪問變數 assign name to 2 直接訪問其他程式的變數 assign zliantest1 sbook fldate to 3 通過索引動態訪問結構成員 assign component sy index of structure to 4 通過欄位名動態地訪問結構成員...
C C 為什麼使用動態分配?
include include include why1 按需分配,不浪費記憶體 intmain int salary null int n 0 printf 請輸入僱傭人數 scanf s d n scanf s d n if n 1 二.列印 for int i 0 i delete salar...