公司要做这样一个程序---把MEMO中的数据以一行为单位,上传到网上的数据库(为一个字段)  
用UDP或TCP
我现在一点思路也没有,希望大家帮忙。

解决方案 »

  1.   

    tcp是有连接的,有保证,但是效率没有udp好
    udp无连接,效率好,但是会出现丢包之类的问题,你要做好回应,然后及时处理
      

  2.   

    客户端和服务器端各用一个UDP,本地端口和远程端口互为相反.
    客户端:
    ...
    procedure TForm1.Button1Click(Sender: TObject);
    var
      MyStream:TStringStream;
    begin
      MyStream:=TStringStream.Create(Memo1.Text);
      NMUDPClient.SendStream(MyStream);
    end;服务器端:
    ...procedure TForm1.NMUDPServerDataReceived(Sender: TComponent;
      NumberBytes: Integer; FromIP: String; Port: Integer);
    var
      MyStream:TStringStream;
      i:integer;
    begin
      MyStream:=TStringStream.Create('');
      NMUDPServer.ReadStream(MyStream);
      Memo1.Lines.LoadFromStream(MyStream);
      for i:=0 to Memo1.Lines.Count-1 do
        begin
        ADODataSet1.Append;
        ADODataSet1.FieldByName('ZD').asString:=Memo1.Lines.Strings[i];
        Memo1.Lines.Strings[i].Post;
    end;
      

  3.   

    我用的上D7
     NMUDPClient.SendStream(MyStream);
    这句有错误IdUDPClient1还是UdpSocket1
      

  4.   

    我用的是D6,是FastNet组件,不过用IDUDP应该是一样的.这段程序我测试过,没有问题.
    最后一名应该是
    ADODataSet1.Post;
      

  5.   

    已经知道 对方的IP地址和端口号但是不能对其有任何操作的情况下
    上传数据到对方的数据库用IDUDP或IDTCP请各位帮忙
      

  6.   

    如果要求信息一条不漏保证顺序的上传就用TCP,程序写起来也很简单。
    以下例子使用了Indy的TCP组件,实现了客户端与服务器端MEMO的同步,相信略加修改就能满足楼主需求。
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, IdTCPServer, IdBaseComponent, IdComponent,
      IdTCPConnection, IdTCPClient;type
      TForm1 = class(TForm)
        IdTCPClient1: TIdTCPClient;
        IdTCPServer1: TIdTCPServer;
        Memo1: TMemo;
        Memo2: TMemo;
        procedure FormCreate(Sender: TObject);
        procedure IdTCPServer1Execute(AThread: TIdPeerThread);
        procedure Memo1Change(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      with IdTCPServer1 do
      begin
        Active:=False;
        Bindings.Clear;
        Bindings.Add.Port:=1981;
        Active:=True;
      end;
      with IdTCPClient1 do
      begin
        Host:='127.0.0.1';
        Port:=1981;
        Connect;
      end;
    end;procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
    var
      i,rn:Integer;
    begin
      try
        with AThread,Connection do
        begin
          rn:=ReadInteger;
          if rn>0 then Memo2.Lines.Clear;
          for i:=1 to rn do
            Memo2.Lines.Add(ReadLn)
        end;
      except
        on E:Exception do AThread.Stop;
      end;
    end;procedure TForm1.Memo1Change(Sender: TObject);
    begin
      IdTCPClient1.WriteStrings(Memo1.Lines,True);
    end;end.