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

COM的使用可以完全不用135Port,如果用SocketConnent是不是可能呢

尚未結案
dennis11
一般會員


發表:2
回覆:13
積分:3
註冊:2004-09-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-20 12:04:50 IP:211.76.xxx.xxx 未訂閱
COM的使用可以完全不用135Port,如果用SocketConnent是不是可能呢? 如果COM是由VC或VB所產生的,是不是用SocketConnent是不是可能呢? 有無ex提供
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-22 12:30:06 IP:203.204.xxx.xxx 未訂閱
引言: COM的使用可以完全不用135Port,如果用SocketConnent是不是可能呢? 如果COM是由VC或VB所產生的,是不是用SocketConnent是不是可能呢? 有無ex提供
Port在本機一定會用到, 用SocketConnection是透過Scktsrvr來連DCOM, 對外可以不用135 Port, 可不可以連COM就要試了才知道, 至於COM是由什麼程式所寫, 應該關係不大. <iFrame src="http://www.coss.com.tw/jieshu/sign.htm" width=400 height=105 scolling="NO" border="0"></iFrame> 震江系統(股)公司: http://www.coss.com.tw/ 捷舒軟體設計坊: http://www.coss.com.tw/jieshu/ 發表人 - jieshu 於 2004/09/22 12:31:53
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
dennis11
一般會員


發表:2
回覆:13
積分:3
註冊:2004-09-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-22 14:46:39 IP:211.76.xxx.xxx 未訂閱
要如何用TSocketConnection連呢? 因為COM是廠商提供的元件 我在Server起scktsrvr.exe 在Client用TSocketConnection要如何連呢? scktsrvr中有加入元件的GUID 可是用TSocketConnection指到Server由ServerName等屬性找不到資料 所以不知那裡有錯或是不支援呢?
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-22 15:04:27 IP:61.222.xxx.xxx 未訂閱
這裡有個範例 http://www.distribucon.com/download/midas/callback.zip 可以下載瞭解看看,可能會對妳有些幫助!
dennis11
一般會員


發表:2
回覆:13
積分:3
註冊:2004-09-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-09-22 16:22:46 IP:211.76.xxx.xxx 未訂閱
謝謝你,我看完,但我最大的問題是無法利用SocketConnection建立與COM的連線 因為無法從物件檢視器中取到Server上COM的物件
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-09-22 16:36:54 IP:61.222.xxx.xxx 未訂閱
可以先用 TDcomConnection 取得 ServerName 再複製給 TSocketconnection 的Servername(本身不會產生)
dennis11
一般會員


發表:2
回覆:13
積分:3
註冊:2004-09-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-09-22 16:52:49 IP:211.76.xxx.xxx 未訂閱
我也用TDcomConnection 但ServerName下拉還是找不到
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-09-22 17:00:11 IP:61.222.xxx.xxx 未訂閱
COM 需要註冊!
dennis11
一般會員


發表:2
回覆:13
積分:3
註冊:2004-09-16

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-09-22 17:11:17 IP:211.76.xxx.xxx 未訂閱
我的COM是正常,但是在135port下執行. 利用下列方式由Client呼叫 myRateObj = CoGetRate::CreateRemote(Ip.Detach()); 但用TDCOMConnection時無法由ServerName帶出 我也有參考XXX_TLB檔,不知為什麼
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-09-22 17:38:41 IP:61.222.xxx.xxx 未訂閱
..............Register.........unRegister IN Process....Regsvr32 名稱....Regsvr32 /u 名稱 OUT Process...直接執行EXE......名稱.EXE /unregserver 我覺得還是註冊吧 要不然直接把 GUID 打進去。
dennis11
一般會員


發表:2
回覆:13
積分:3
註冊:2004-09-16

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-09-23 11:13:10 IP:211.76.xxx.xxx 未訂閱
已經註冊了,且在DComcnfg中也找的到物件 但在tDComConnection中的ServerName中就是沒有可以選 不知那裡有問題
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-09-23 11:47:35 IP:61.222.xxx.xxx 未訂閱
在Sever執行 ScktSrvr.exe 直接輸入 ServerGUID 忽略 ServerName 試試!
dennis11
一般會員


發表:2
回覆:13
積分:3
註冊:2004-09-16

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-09-23 12:52:39 IP:211.76.xxx.xxx 未訂閱
你好: 這我試過了TDCOMConnection可以Open 但同樣的設定用TSocketConnection會出現Object not available {XXXXX-XXXX--XXXX...} 的錯誤訊息 不知道是那裡設錯了 P.S. ScktSrvr.exe 這程式也起了
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-09-23 13:18:46 IP:61.222.xxx.xxx 未訂閱
我查一下 Delphi Source SObjectNotAvailable = 'Object not available: %s'; function TDataBlockInterpreter.CreateObject(const Name: string): OleVariant; var ClassID: TGUID; begin if (Name[1] = '{') and (Name[Length(Name)] = '}') then ClassID := StringToGUID(Name) else ClassID := ProgIDToClassID(Name); if CanCreateObject(ClassID) then Result := InternalCreateObject(ClassID) else raise Exception.CreateResFmt(@SObjectNotAvailable, [GuidToString(ClassID)]); end; 1. ServerGUID = '{' GUID '}'; 2. 看起來 CanCreateObject 出了問題。 function TDataBlockInterpreter.CanCreateObject(const ClassID: TGUID): Boolean; begin Result := (FCheckRegValue = '') or (GetRegStringValue(SClsid GuidToString(ClassID), FCheckRegValue) = SFlagOn); end; CanCreateObject 是檢查登錄檔是否有此 GUID \\HKEY_CLASSES_ROOT\CLSID 自己檢查看看是否出了什麼問題!
dennis11
一般會員


發表:2
回覆:13
積分:3
註冊:2004-09-16

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-09-23 13:35:09 IP:211.76.xxx.xxx 未訂閱
\\HKEY_CLASSES_ROOT\CLSID 下確實有這物件 但是DComConnection可以,SocketConnection郤不可以是設定值有誤 或是少了什麼嗎?
alphakao
一般會員


發表:0
回覆:18
積分:8
註冊:2002-07-04

發送簡訊給我
#16 引用回覆 回覆 發表時間:2004-09-23 15:56:34 IP:210.202.xxx.xxx 未訂閱
是不是 Socket Server 中的 Connections->Registered Objects Only 被打開了? 關掉試試看.
dennis11
一般會員


發表:2
回覆:13
積分:3
註冊:2004-09-16

發送簡訊給我
#17 引用回覆 回覆 發表時間:2004-09-23 16:23:28 IP:211.76.xxx.xxx 未訂閱
是不是 Socket Server 中的 Connections->Registered Objects Only 被打開了? 你好: 是要在那裡設定呢? 可以說詳細一點嗎? 謝謝
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#18 引用回覆 回覆 發表時間:2004-09-23 19:14:48 IP:61.31.xxx.xxx 未訂閱
我想問題應該很清楚了! 會出現那個訊息,只要推敲一下 不難發現問題所在!
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#19 引用回覆 回覆 發表時間:2004-09-24 14:09:26 IP:203.204.xxx.xxx 未訂閱
引言: COM的使用可以完全不用135Port,如果用SocketConnent是不是可能呢? 如果COM是由VC或VB所產生的,是不是用SocketConnent是不是可能呢? 有無ex提供
其實何必一定要直接連呢? 當作三層式程式來寫不就好了, 由Server程式來呼叫COM, 就和一般的程式連COM沒有兩樣. <iFrame src="http://www.coss.com.tw/jieshu/sign.htm" width=400 height=105 scolling="NO" border="0"></iFrame> 震江系統(股)公司: http://www.coss.com.tw/ 捷舒軟體設計坊: http://www.coss.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
dennis11
一般會員


發表:2
回覆:13
積分:3
註冊:2004-09-16

發送簡訊給我
#20 引用回覆 回覆 發表時間:2004-09-24 15:41:35 IP:211.76.xxx.xxx 未訂閱
因為com物件是外包的所以沒法改 病毒流行網管又不同意開135 所以才會有想用SocketConnection的方式連接可以不變COM又不用135 port
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#21 引用回覆 回覆 發表時間:2004-09-24 18:58:03 IP:203.204.xxx.xxx 未訂閱
引言: 因為com物件是外包的所以沒法改 病毒流行網管又不同意開135 所以才會有想用SocketConnection的方式連接可以不變COM又不用135 port
我說的就是不用去改COM阿, 由SocketConnection呼叫RemoteDataModule, 在RemoteDataModule裡去呼叫COM, 寫對應的Function來呼叫即可.
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
dennis11
一般會員


發表:2
回覆:13
積分:3
註冊:2004-09-16

發送簡訊給我
#22 引用回覆 回覆 發表時間:2004-09-27 17:16:04 IP:211.76.xxx.xxx 未訂閱
有沒有Sample可以參考呢? RemoteDataModule要如何與SocketConnect連接 RemoteDataModule要如何與com連接 本機135不用開,com在MTS下起的來嗎?是設127.0.0.1不用135,會不會 Proxy及Stub連線建不起來.不能用呢?
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#23 引用回覆 回覆 發表時間:2004-09-27 19:39:53 IP:203.204.xxx.xxx 未訂閱
引言: 有沒有Sample可以參考呢? RemoteDataModule要如何與SocketConnect連接---多層基本常識--- RemoteDataModule要如何與com連接 本機135不用開,com在MTS下起的來嗎?是設127.0.0.1不用135,會不會 Proxy及Stub連線建不起來.不能用呢?
我沒寫過和COM連的程式, 所以也不曉得怎麼寫, 如果您也不知道怎麼連COM的話, 建議您先找這方面的寫法, 套到三層式的方式我再幫您寫個Sample, 本機的135 Port是一定要開的, 除非用防火牆擋掉, 外部才不能連.
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
dennis11
一般會員


發表:2
回覆:13
積分:3
註冊:2004-09-16

發送簡訊給我
#24 引用回覆 回覆 發表時間:2004-09-29 10:40:07 IP:211.76.xxx.xxx 未訂閱
>>我說的就是不用去改COM阿, 由SocketConnection呼叫RemoteDataModule, 在>>RemoteDataModule裡去呼叫COM, 寫對應的Function來呼叫即可. 我想我誤會你的意思了,我以為你說不用改COM,用SocketConnection呼叫RemoteDataModule,在RemoteDataModule裡去呼叫COM即可如題的避掉135 port,不過還是謝謝你!因為這個問題我問過MicroSoft的MVP等一些人,所得到的 答案都是要用135(除非用.Net重寫COM 可以自定外,基本上以前的COM都要用135),但我曾在其他論壇中看過有人說可以用http去替代,都沒有看到真正可以解決的方案,只有是而非的假定.
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#25 引用回覆 回覆 發表時間:2004-09-29 11:00:23 IP:203.204.xxx.xxx 未訂閱
引言: 我想我誤會你的意思了,我以為你說不用改COM,用SocketConnection呼叫RemoteDataModule,在RemoteDataModule裡去呼叫COM即可如題的避掉135 port,不過還是謝謝你!因為這個問題我問過MicroSoft的MVP等一些人,所得到的 答案都是要用135(除非用.Net重寫COM 可以自定外,基本上以前的COM都要用135),但我曾在其他論壇中看過有人說可以用http去替代,都沒有看到真正可以解決的方案,只有是而非的假定.
在本機用135 Port有什麼問題嗎? 我想你誤會網管的意思了, 在本機無論哪個Port都能用, 除了不要和別人一樣, 對外連結由於怕被病毒連線攻擊, 才利用防火牆擋掉對135 Port的連結, 所以用SocketConnection來連是沒問題的, 因為Scktsrvr和SocketConnection都可以自己指定Port, RemoteDataModule也是COM的一種, 也是用135 Port, 可透過scktsrvr讓SocketConnection來連, 在RemoteDataModule上要再連其他東西應該都沒問題才是.
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
speedup
資深會員


發表:19
回覆:259
積分:280
註冊:2003-07-04

發送簡訊給我
#26 引用回覆 回覆 發表時間:2004-09-29 11:30:57 IP:218.168.xxx.xxx 未訂閱
烽火連天 這問題好像不大 < class="code"> 我試了一下透過ScoketConnection 可以呼叫其他COM 元件 步驟如下 首先在Server執行Borland Socket Server port要開哪個自己定 記的取消Borland Socket Server 中Connections 的Registered Object Only 接著寫Client端程式 擺一個TSocketConnetction 和按鈕上去 TSocketConnetction 設定如下 Address = Server 的 ip Address ServerName = Word.Application (我假設你的Server上有裝Word) Connectiioned = True 在Button Click事件中撰寫以下程式碼 var Word :OleVariant; begin word := socketConnection1.AppServer; word.Visible := True; end; 在Client執行程式按下按鈕後應該可以看到Server機器上的Word會執行 so.只要你開發的COM元件符合Dual Interface 應該都可被socketConnection使用 混心雜欲 棄修身~唉
------
唉~
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#27 引用回覆 回覆 發表時間:2007-04-30 13:44:43 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
系統時間:2024-04-23 22:01:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!