要求是这样的:  我在我的机器上写了一个接受远程服务器的程序,用IDTCPSERVER写的接收事件,我的机器是拨号上网的。我的服务器是电信机房的。首先我用IDTCPCLIENT发送了一个字符串ABC。。然后我的IDTCPSERVER的接收事件等待服务器发送CBA字符串。  我想问一下是不是外部IP是不是不能跟拨号上网的发送字符串数据呀?

解决方案 »

  1.   

    电信的ADSL拨号上网一般也都分配得有公网IP..这种情况下至少拨号的那台机子应该视为在外网.
    应该是可以连接的..检查一下是不是被防火墙拦了.
      

  2.   

    觉得楼主使用的通讯方式有些怪异..能说更清楚些吗? 
    楼主是在本地同时使用IDTCPSERVER与idTcpClient?
    为什么不只使用idTcpClient呢?
      

  3.   

    我现在有一个程序,上面有二个控件,分别为:IDTCPSERVER  IDTCPCLIENT ....在这里IDTCPCLIENT是向我的电信服务器里面发送消息的,而IDTCPSERVER这个是得到电信机房服务器发送的确定回复消息.现在的流程是这样的,我的机器是拨号上网的,然后通过我刚说的那个软件设置服务器的IP和端口发送字符,但是我得不到服务器发回的回执字符.为什么. 
      

  4.   

    因为idTcpClient是阻塞式的,不太好用.如果要用的话还得用线程.如果我用IDTCPSERVER的话就不用想那么多了..直接用就行了...
      

  5.   

    既然用 IDTCPCLIENT 可以连上
    那为什么不直接用 IDTCPCLIENT 接收返回的信息而是另外用IDTCPSERVER新建一个连接呢 ?
    直接用已经连接上的 IDTCPCLIENT 接收返回的信息 
    那样的话就避免了外网无法连接内网的问题了
      

  6.   

    哦,真接用IDTCPCLIENT可以避免外网跟内网无法连接的问题吗
      

  7.   

    晕,楼主该不会真的就因为想省掉创建线程而把应用协议设计得这么笨重吧.任何一个TCP连接都是建立的双向通路,用idtcpclient,确实是因为它用的阻塞方式,编程上也许要多考虑一点,不过就是楼主自己说的,多一个工作线程来专处理接收.
      

  8.   

    procedure TForm6.Button1Click(Sender: TObject);
    var
      S: string;
    begin
      with IdTCPClient1 do
      begin
        Host := '***.***.***.***';   //电信机房
        Port := 2453;
        Connect;
        Memo1.Lines.Add('Connect...OK');
        Sleep(1000);
        IOHandler.WriteLn('2007-01-01 abc);
        S := IOHandler.ReadLn(#10);
        Memo1.Lines.Add(S);
      end;
    end;我的电脑是公司的局域网,通过这个上网的.然后向我们的服务器发送一串数局后要得到一个回执,服务器能收到我的东西,但我得不到他的回执.
      

  9.   

    tcpclient_DataArrival(VB) 这个怎么转成DELPHI。Private Sub cd1_click()tcpclient.RemoteHost = Text1.Texttcpclient.RemotePort = Val(Text2.Text)  '端口号,缺省为1001tcpclient.Connect '调用connect方法,与指定IP地址的计算机进行连接cd1.Enabled = FalseEnd SubPrivate Sub cd2_Click()
        tcpclient.SendData "  4611110500012007-04-03 12:24:44111002801001"
    End SubPrivate Sub tcpclient_DataArrival(ByVal bytesTotal As Long)
    Dim x As String    tcpclient.GetData x '使用getdata获得发送来的数据
        If x <> "" Then
           List1.AddItem "收到回执:" & x
        End IfEnd Sub
    VB写的就收得到。。  我用DELPHI写的就收不到。  郁闷