在線等大神解答
主要問題:小弟使用delphi+SQL進行編程,在連接服務器資料庫之前,想先ping下主機以減少軟體的反饋時間(若IP地址錯誤,會導致軟體登陸界面長時間無反應)。之前在XP系統下用的代碼沒問題,能夠運行成功。如今換了臺電腦,一樣的代碼運行時出現 EIDInvalidSocket with message ‘cannot allocate socket’ 。請大神幫忙看下是什么原因造成的,在此先感謝各位大神了。
代碼如下:
IpAddress:= edit3.Text;
IdIcmpClient1.Host := IpAddress; //服務器的名稱或IP地址
IdIcmpClient1.ReceiveTimeout := 1000; //最大等待時間
IdIcmpClient1.Ping();
if (IdIcmpClient1.ReplyStatus.BytesReceived=0) or (IdIcmpClient1.ReplyStatus.TimeToLive=0) then
Application.MessageBox('服務器地址不正確或服務器未打開,請聯系網路管理員!','',MB_OK )
else
begin
SaleDM.ADOConnection1.Connected := false;
SaleDM.ADOConnection1.LoginPrompt := false;
SaleDM.ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=' + 'prmUser' + ';password=' + 'prm' + ';Initial Catalog=' + 'Tsddsjk' + ';Data Source=' + IpAddress;
try SaleDM.ADOConnection1.Connected := true;
except
Application.MessageBox('資料庫配置不正確,請重新配置!','提示',MB_OK );
SaleDM.ADOConnection1.Connected:=false;
application.Terminate;
end;
end;
問題出現在紅色文字部分。 將 IdIcmpClient1功能部分 {} 后,程式能夠運行。
uj5u.com熱心網友回復:
Socket.exe接行了嗎?uj5u.com熱心網友回復:
LS大神能說的詳細些么?還是不太懂 socket.exe是什么意思?之前XP系統下能運行,現在Win7不行,是不是跟系統有關系?能詳細說下怎么解決么?
uj5u.com熱心網友回復:
@lyhoo163 大神 快來 問題還在困擾我uj5u.com熱心網友回復:
新情況說明: 重新另外建一個空白form,試驗陳述句是否存在問題,代碼如下:IdIcmpClient1.Host:=Edit1.Text;
IdIcmpClient1.ReceiveTimeout:=1000;
IdIcmpClient1.Ping();
if (IdIcmpClient1.ReplyStatus.BytesReceived=0) or (IdIcmpClient1.ReplyStatus.TimeToLive=0) then
Label1.Caption:='失敗'
else
Label1.Caption:='成功';
在新建狀態下,程式運行沒問題,證明陳述句應該是沒問題的。但保存到本地后(save all),再運行,就又出現‘cannot allocate socket’。
有哪位大神同樣遇到過么?
uj5u.com熱心網友回復:
我也遇到這個問題 設定EXE檔案兼容性為XP就可以了具體為什么在WIN7/WIN8上不行 還不知道
uj5u.com熱心網友回復:
是不是win7 的權限問題?你關掉防火墻,然后用管理員權限運行試試
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/83488.html
標籤:數據庫相關
