全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1192
推到 Plurk!
推到 Facebook!

TIdTcpClient 連接 IIS... get no response..WHY?!

尚未結案
hedge
一般會員


發表:4
回覆:10
積分:2
註冊:2004-09-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-15 11:01:38 IP:202.39.xxx.xxx 未訂閱
Dear All...    我因為 TIdhttp 試不出來 所以用 TIdTcpClient 再試試看 但是 IIS 沒有回應....以下是程式的片段~~~ ReadBuffer 沒有辦法讀到資料會 timeout ~~~~      TClientHandleThread = class(TThread)   private     CB: String ;     procedure HandleInput;   protected     procedure Execute; override;   end;    procedure TForm1.CBClientActiveClick(Sender: TObject); begin   if CBClientActive.Checked then   begin     try       Client.Connect(10000);  // in Indy < 8.1 leave the parameter away          ClientHandleThread := TClientHandleThread.Create(True);       ClientHandleThread.FreeOnTerminate:=True;       ClientHandleThread.Resume;     except       on E: Exception do MessageDlg ('Error while connecting:'+#13+E.Message, mtError, [mbOk], 0);     end;   end   else   begin     ClientHandleThread.Terminate;     Client.Disconnect;   end;      ButtonSend.Enabled := Client.Connected;   CBClientActive.Checked := Client.Connected; end;    procedure TForm1.ButtonSendClick(Sender: TObject); var    senddata,sendbuffer : string ;    datalen : integer ; begin   senddata := '<?xml version="1.0" encoding="big5" ?> ';   senddata := senddata + '<head>'; senddata := senddata '6 </head> <body> '; senddata := senddata '</body></COMP> ' #13#10; datalen := length(senddata); sendbuffer := sendbuffer ' POST /test/testx.asp HTTP/1.0 ' #13#10; sendbuffer := sendbuffer ' HOST: 111.22.33.444 ' #13#10; sendbuffer := sendbuffer 'Content-Type: text/xmlContent-Length:' inttostr(datalen) ; sendbuffer := sendbuffer #13#10 #13#10 ; sendbuffer := sendbuffer senddata ; iFlag := 1 ; Client.WriteBuffer (sendbuffer, SizeOf (sendbuffer), true); end; procedure TClientHandleThread.HandleInput; begin if(length(cb) >0) then form1.memo1.lines.Add(cb); end; procedure TClientHandleThread.Execute; begin while not Terminated do begin if not form1.Client.Connected then Terminate else try if(form1.iFlag = 1) then form1.Client.ReadBuffer(CB, SizeOf (CB)); Synchronize(HandleInput); except end; end; end; 發表人 - hedge 於 2004/11/15 11:05:16 發表人 - hedge 於 2004/11/15 11:06:41
hedge
一般會員


發表:4
回覆:10
積分:2
註冊:2004-09-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-15 11:12:53 IP:202.39.xxx.xxx 未訂閱
非常抱歉 以上 sneddata 是一串 XML 格式啦 但是我想應該不是 IIS 沒有回應的原因 至少要回應 XML 錯誤 等 的訊息    以下是 Linux c 的部分 這是可以成功的 case ... Thanks ~~~    //MXL format ---- strcpy(senddata,"<?xml version=\"1.0\" encoding=\"big5\" ?>"); ...... ...... strcat(senddata,"</body></senddata>\n");   datalen=strlen(senddata);   sprintf(sendbuffer,"%s%s%s %d %s%s",          "POST /test/testx.asp HTTP/1.0\n",          "HOST: 111.22.33.444 \n",          "Content-Type: text/xml\nContent-Length:",          datalen,"\n\n",senddata);   if (send(s,sendbuffer,strlen(sendbuffer),0)<0){ perror("socket"); exit(1); } recvresult=recv(s,recvbuffer,2048,0); strcpy(recvdata,recvbuffer); i=0; while(1){ strcpy(recvbuffer," "); recvresult=recv(s,recvbuffer,2048,0); i=i ; printf("%d(%d)\n",i,recvresult); if (recvresult<=0) break; strcat(recvdata,recvbuffer); } printf("%s\n",recvdata); close(s);
kensoong
初階會員


發表:31
回覆:70
積分:45
註冊:2003-05-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-21 02:30:13 IP:59.105.xxx.xxx 未訂閱
請把 form1.Client.ReadBuffer(CB, SizeOf (CB)); 改成 CB := form1.Client.CurrentReadBuffer; 就可以了...
hedge
一般會員


發表:4
回覆:10
積分:2
註冊:2004-09-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-24 11:52:52 IP:202.39.xxx.xxx 未訂閱
謝謝您 的回答 甘恩內~~~~~
Ktop_Robot
站務副站長


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-04-26 13:51:20 IP:000.000.xxx.xxx 未訂閱
提問者您好:


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


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


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

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