2014-03-27 100 views
1

我決定從SOAP服務器移到DataSnap服務器& REST。我查看並遵循了幾個教程,甚至嘗試過DXE5演示,但我一直得到相同的結果。問題是我無法將客戶端應用程序上的TSQLConnection連接到正在運行的DataSnap服務器。DataSnap服務器套接字錯誤10061

這裏是代碼:

Socket Error # 10061 
Connection refused.. 
OS = Windows 7 64bit 
RAD Studio XE5 Update 2 

繼帕維爾Glowacki(和ohters)DataSnap多層視頻教程。

在創建Datasnap客戶端/服務器應用程序時,我無法將客戶端TSQLConnection連接到DSServer。

  1. 服務器正在運行(localhost)!

  2. Firewal停用。

  3. 將端口211添加到Windows防火牆入站&出站規則。

  4. 我已經嘗試創建DataSnat REST應用程序併發生相同的錯誤。

  5. 當在DXE和DXE3中執行此操作時,我會得到相同的結果。

步驟來重現

  1. 創建DataSnap服務器(嘗試都DataModule的& DSServerModule)。
  2. 離開默認端口211(也嘗試過其他幾個端口(8080,9000)。
  3. 運行服務器。一切都OK了這裏。
  4. 創建VCL窗體應用程序。
  5. 添加一個TSQLConnection對主要形式。
  6. 設置駕駛員的DataSnap。
  7. CommunicationProtocol = TCP/IP。
  8. DataSnapCOntext =的DataSnap/
  9. 主機名=本地主機(嘗試127.0.0.1和我的電腦的IP地址)。
  10. LoginPropt = False。
  11. 運行服務器。
  12. 啓動服務器。
  13. 在瀏覽器中打開工作正常。
  14. 將TSQLConnection上的Connected屬性設置爲true。
  15. 生成套接字錯誤10061,我無法過去。

這是堆棧跟蹤。

[5110E67F]{IndySystem190.bpl} IdStack.TIdStack.RaiseSocketError (Line 771, "IdStack.pas" + 42) + $21 
[5110E606]{IndySystem190.bpl} IdStack.TIdStack.RaiseLastSocketError (Line 725, "IdStack.pas" + 1) + $F 
[5110E571]{IndySystem190.bpl} IdStack.TIdStack.CheckForSocketError (Line 699, "IdStack.pas" + 2) + $3 
[5110A9F4]{IndySystem190.bpl} IdStackWindows.TIdStackWindows.Connect (Line 1771, "IdStackWindows.pas" + 20) + $13 
[50DF5849]{IndyCore190.bpl} IdSocketHandle.TIdSocketHandle.Connect (Line 294, "IdSocketHandle.pas" + 1) + $25 
[50E01CF9]{IndyCore190.bpl} IdIOHandlerStack.TIdIOHandlerStack.ConnectClient (Line 344, "IdIOHandlerStack.pas" + 52) + $A 
[50E05283]{IndyCore190.bpl} IdIOHandlerSocket.TIdIOHandlerSocket.Open (Line 332, "IdIOHandlerSocket.pas" + 13) + $4 
[50E01011]{IndyCore190.bpl} IdTCPClient.TIdTCPClientCustom.Connect (Line 317, "IdTCPClient.pas" + 52) + $B 
[16F76AFD]{IndyIPClient190.bpl} IPPeerClient.TIdTCPClientPeerIP.Connect (Line 1166, "IPPeerClient.pas" + 0) + $5 
[520AC809]{DbxClientDriver190.bpl} Data.DbxSocketChannelNative.TDBXIdTCPLayer.Open (Line 378, "Data.DbxSocketChannelNative.pas" + 27) + $5 
[520AC44B]{DbxClientDriver190.bpl} Data.DbxSocketChannelNative.TDBXSocketChannel.Open (Line 149, "Data.DbxSocketChannelNative.pas" + 13) + $E 
[50059970]{rtl190.bpl } [email protected] (Line 4364, "System.pas" + 20) + $0 
[50060DA0]{rtl190.bpl } [email protected] (Line 23846, "System.pas" + 14) + $0 
[520AEA09]{DbxClientDriver190.bpl} Data.DBXTransportFilter.TDBXFilterSocketChannel.SetDBXProperties (Line 712, "Data.DBXTransportFilter.pas" + 8) + $10 
[520AE999]{DbxClientDriver190.bpl} Data.DBXTransportFilter.TDBXFilterSocketChannel.Open (Line 693, "Data.DBXTransportFilter.pas" + 0) + $5 
[520B0897]{DbxClientDriver190.bpl} Data.DBXClient.TDBXClientConnection.DerivedOpen (Line 430, "Data.DBXClient.pas" + 5) + $8 
[5214F8D7]{DbxCommonDriver190.bpl} Data.DBXCommon.TDBXConnection.Open (Line 8599, "Data.DBXCommon.pas" + 5) + $4 
[5214AC72]{DbxCommonDriver190.bpl} Data.DBXCommon.TDBXConnectionFactory.GetConnection (Line 6724, "Data.DBXCommon.pas" + 14) + $5 
[5214AB6D]{DbxCommonDriver190.bpl} Data.DBXCommon.TDBXConnectionFactory.GetConnection (Line 6701, "Data.DBXCommon.pas" + 0) + $5 
[51392D29]{dbexpress190.bpl} Data.SqlExpr.TSQLConnection.DoConnect (Line 2490, "Data.SqlExpr.pas" + 56) + $6 
[50A8AA4D]{dbrtl190.bpl} Data.DB.TCustomConnection.SetConnected (Line 3482, "Data.DB.pas" + 8) + $4 
[50128326]{rtl190.bpl } System.TypInfo.SetOrdProp (Line 2583, "System.TypInfo.pas" + 21) + $1 
[2110BA52]{designide190.bpl} DesignEditors.TPropertyEditor.SetOrdValue (Line 839, "DesignEditors.pas" + 2) + $E 
[211564F7]{designide190.bpl} VCLEditors.TBooleanProperty.MouseUp (Line 1864, "VCLEditors.pas" + 5) + $10 
[212A13CD]{vclide190.bpl} PropBox.TCustomPropListBox.ItemMouseUp (Line 1631, "PropBox.pas" + 17) + $1B 
[212A15C3]{vclide190.bpl} PropBox.TCustomPropListBox.MouseUp (Line 1696, "PropBox.pas" + 1) + $D 
[504634D8]{vcl190.bpl } Vcl.Controls.TControl.DoMouseUp (Line 7468, "Vcl.Controls.pas" + 2) + $28 
[50463554]{vcl190.bpl } Vcl.Controls.TControl.WMLButtonUp (Line 7481, "Vcl.Controls.pas" + 9) + $6 
[212A6D50]{vclide190.bpl} IDEInspListBox.TInspListBox.WMLButtonUp (Line 1632, "IDEInspListBox.pas" + 3) + $4 
[50462B49]{vcl190.bpl } Vcl.Controls.TControl.WndProc (Line 7224, "Vcl.Controls.pas" + 91) + $6 
[1ECD5CD1]{cxLibraryRS19.bpl} dxHooks.TdxSystemHook.ProcessHookProcs$qqriuii + $99 
[1ECD5A9A]{cxLibraryRS19.bpl} dxHooks.dxSystemGetMessageHook$qqsiuii + $16 
[50466E9F]{vcl190.bpl } Vcl.Controls.TWinControl.IsControlMouseMsg (Line 9807, "Vcl.Controls.pas" + 1) + $9 
[50467669]{vcl190.bpl } Vcl.Controls.TWinControl.WndProc (Line 10039, "Vcl.Controls.pas" + 153) + $6 
[5048AF69]{vcl190.bpl } Vcl.StdCtrls.TCustomListBox.WndProc (Line 7108, "Vcl.StdCtrls.pas" + 55) + $5 
[50466CAC]{vcl190.bpl } Vcl.Controls.TWinControl.MainWndProc (Line 9751, "Vcl.Controls.pas" + 3) + $6 
[501749C4]{rtl190.bpl } System.Classes.StdWndProc (Line 17010, "System.Classes.pas" + 5) + $0 
[5059214F]{vcl190.bpl } Vcl.Forms.TApplication.CancelHint (Line 11117, "Vcl.Forms.pas" + 6) + $E 
[50590DC3]{vcl190.bpl } Vcl.Forms.TApplication.ProcessMessage (Line 10288, "Vcl.Forms.pas" + 23) + $1 
[50590E06]{vcl190.bpl } Vcl.Forms.TApplication.HandleMessage (Line 10318, "Vcl.Forms.pas" + 1) + $4 
[50591141]{vcl190.bpl } Vcl.Forms.TApplication.Run (Line 10456, "Vcl.Forms.pas" + 26) + $3 

我該怎麼做?

+0

當服務器開始運行時,您是否收到有關應用程序是應該被阻止還是被阻止的消息?如果不這樣做,請檢查數據模塊是否正在自動創建 - 如果不是,請嘗試移動它。 – RichardS

+0

爲了澄清,它應該確保創建ServerContainer數據模塊。 – RichardS

+0

美好的一天理查德,謝謝你的帖子。當我遇到這個問題時,我在上週的工作中測試了這個DataSnap功能。我們正處於幾個項目的中間。所以很大的壓力。當我週末回到家時,我決定玩一下,看看我能否解決這個問題。在短短几分鐘後,圍繞着測試應用程序的項目源,我注意到一些表單不在自動創建列表中,所以我將它們中的一些移到了自動創建和VOILA!這一切都很好。在這種情況下,您的解決方案是正確的,所以感謝您的意見 –

回答

2

確保ServerContainer數據模塊在啓動時自動創建,或自行創建。

-1

通過將TDSTCPServerTransport組件添加到我的ServerContainer數據模塊來解決此問題。

+0

這並沒有真正回答這個問題。如果您有不同的問題,可以通過單擊[提問](http://stackoverflow.com/questions/ask)來提問。您還可以[添加賞金](http://stackoverflow.com/help/privileges/set-bounties)在您擁有足夠的[聲譽](http://stackoverflow.com/help/)時吸引更多人關注此問題什麼聲譽)。 – AgentConundrum

+0

我會讓我的答案是這樣,原因是同樣的問題,我正在與RESTFULL + JSON應用程序,並添加DataSnap,但沒有組件我有SocketError#10061 –

1

我得到套接字錯誤#10061與嚮導創建的DataSnap REST客戶端模塊在localhost

(測試端口8080的時候)我所做的是我跑了DataSnap REST服務器應用程序文件(.exe),並開始它在端口8080上的LocalHost上。我添加了一個新的DataSnap REST客戶端模塊。測試了8080端口和voilà!有效。