socket問題,請各位幫忙,謝謝!

來源:互聯網
上載者:User
socket問題,請各位幫忙,謝謝! Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiNetwork/html/delphi_20061129103700235.html
我的服務端程式如下:  
  Procedure   TFileServerThread.ClientExecute;  
  Var  
      Data:   Array[0..1023]   Of   char;  
      RecText:   String;  
      SocketStream:   TWinSocketStream;  
  Begin  
      While   Not   Terminated   And   ClientSocket.Connected   Do  
      begin  
          Try  
              SocketStream   :=   TWinSocketStream.Create(ClientSocket,   30000);  
              if   SocketStream.WaitForData(60000)   then  
              begin  
                  Try  
                      FillChar(Data,   SizeOf(Data),   0);  
                      If   SocketStream.Read(Data,   SizeOf(Data))   =   0   Then  
                      Begin  
                              ClientSocket.SendText('Timeout   on   Server'+#13#10);  
                              sleep(1);  
                              ClientSocket.Close;  
                              Terminate;  
                      End;  
                      RecText   :=   Data;  
                      If   Length(RecText)   >   2   Then  
                            Delete(RecText,   Pos(#13#10,   RecText),   2);   //   Delete   #13#10  
                      If   ClientSocket.Connected   Then  
                      Begin  
                              ClientSocket.SendText(RecText);  
                              SendMessage(Form1.Listbox1.Handle,   LB_ADDSTRING,   0,   Integer(PChar(RecText)));  
                              PostMessage(Form1.Handle,   CM_INCCOUNT,   0,   0);  
                      End;  
                  Finally  
                  SocketStream.Free;  
                  End;  
              end;  
        Except  
        //HandleException;  
        //showmessage('ERROR!!!!!!!!');  
        ClientSocket.Close;  
        Terminate;  
        End;  
      end;  
  End;  
  但是當程式啟動並執行時候,會在If   SocketStream.Read(Data,   SizeOf(Data))   =   0   Then這一句報錯:指定的網路名不再可用。我看過原來的文章說:把  
  Except  
        //HandleException;  
        //showmessage('ERROR!!!!!!!!');  
        ClientSocket.Close;  
        Terminate;  
        End  
  這一段程式中的HandleException去掉,我現在已經把它去掉了,但是還是在  
  If   SocketStream.Read(Data,   SizeOf(Data))   =   0這一句報同樣的錯誤,是在不知道怎麼回事了,請各位大俠幫忙,謝謝!!!      
 

單步跟蹤看看吧,可能在執行中把ClientSocket關閉了,那麼SocketStream建立不成功。

先調試通server,然後運行他,在來調試client。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.