線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1590
推到 Plurk!
推到 Facebook!

請問一下socket的問題

答題得分者是:windblown
suntree
一般會員


發表:7
回覆:16
積分:9
註冊:2005-01-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-26 22:17:36 IP:220.135.xxx.xxx 未訂閱
我在一個class內專門起socket以及一些設定,並在此做一個sendto的按鍵    然另一個class寫成thread…並用GetQueuedCompletionStatus來等待資料的傳送    而現在問題來了  我用GetQueuedCompletionStatus只能抓的到port,但是不知道資料是從哪一個ip傳進來的…這樣 就不能 傳回去  給對方了… 去查文章知道recvfrom~~~~試過 recvfrom 但這粉像要 "先設定好對方的ip才能收到資料"....    不知道有沒有方法可以解決我這個問題.....感謝了
suntree
一般會員


發表:7
回覆:16
積分:9
註冊:2005-01-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-27 09:53:02 IP:220.135.xxx.xxx 未訂閱
試了一下  recvfrom是可以抓到對方的ip了^^ 原來是我自己的錯誤~不好意思     不過我又發生一個問題....recvfrom似乎會停在那等..而GetQueuedCompletionStatus也會停在那等.....2個似乎不能並存,因為 我這支程式必需接收 socket和com(rs-232)的資訊  有辦法 解決嗎 感謝~~繼續研究去/.
windblown
中階會員


發表:0
回覆:117
積分:98
註冊:2003-11-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-27 10:56:13 IP:61.229.xxx.xxx 未訂閱
將 socket 與 comm 分別用 TThread 來處理,這樣兩個就可以個別處理了
suntree
一般會員


發表:7
回覆:16
積分:9
註冊:2005-01-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-27 11:12:01 IP:220.135.xxx.xxx 未訂閱
引言: 將 socket 與 comm 分別用 TThread 來處理,這樣兩個就可以個別處理了
嗯 感謝 這也是我寫到的辦法之一 但 不會為了 只要區分 哪一個ip傳來的 就要開新的thread吧~ 我覺得 應該 有 直接的辦法 可以抓到ip或者是com port傳來的辦法~ 那才 比較是 我想問的重點 不好意思了^^"
windblown
中階會員


發表:0
回覆:117
積分:98
註冊:2003-11-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-27 16:07:26 IP:61.229.xxx.xxx 未訂閱
你應該是要做成一個 server 吧?!    如果是的話,可以用 listen(), accept() 來得到該 ip,不需要 recvfrom(); 然後 CreateIoCompletionPort() 加入該 socket    GetQueuedCompletionStatus() 的最後一個參數,可以設為 0 就不會停在那裡了    可以參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=50985 原文(英)在 http://msdn.microsoft.com/msdnmag/issues/1000/Winsock/
suntree
一般會員


發表:7
回覆:16
積分:9
註冊:2005-01-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-27 17:52:10 IP:220.135.xxx.xxx 未訂閱
引言: 你應該是要做成一個 server 吧?! 如果是的話,可以用 listen(), accept() 來得到該 ip,不需要 recvfrom(); 然後 CreateIoCompletionPort() 加入該 socket GetQueuedCompletionStatus() 的最後一個參數,可以設為 0 就不會停在那裡了 可以參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=50985 原文(英)在 http://msdn.microsoft.com/msdnmag/issues/1000/Winsock/
非常謝謝你^^ 看了你這篇文章 然後我又跑去問頂頭上司~~ 得到了 最新結論 就是 recvfrom、GetQueuedCompletionStatus不能共存 但GetQueuedCompletionStatus又不能得到ip 所以 開新的thread才是最好的辦法^^非常謝謝你 又要重做了/.
系統時間:2024-04-26 1:58:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!