c# socket客户服务编程中,如何 传送数组?或非string数据那?

解决方案 »

  1.   

    我看过delphi的一段代码,真是容易:
    unit   Unit1;   
        
      interface   
        
      uses   
          Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,   
          Dialogs,   StdCtrls,   ScktComp;   
      type   myrecord   =   record   
              Flag:Integer;   
              Text:String;   
              myArray:array[0..10]   of   Integer;   
      end;   
      type   
          TForm1   =   class(TForm)   
              ServerSocket:   TServerSocket;   
              Button1:   TButton;   
              Edit1:   TEdit;   
              Edit2:   TEdit;   
              Label1:   TLabel;   
              Label2:   TLabel;   
              ComboBox1:   TComboBox;   
              CheckBox1:   TCheckBox;   
              ClientSocket:   TClientSocket;   
              procedure   Button1Click(Sender:   TObject);   
              procedure   FormCreate(Sender:   TObject);   
              procedure   ServerSocketClientRead(Sender:   TObject;   
                  Socket:   TCustomWinSocket);   
          private   
              {   Private   declarations   }   
          public   
              {   Public   declarations   }   
          end;   
        
      var   
          Form1:   TForm1;   
        
      implementation   
        
      {$R   *.dfm}   
        
      procedure   TForm1.Button1Click(Sender:   TObject);   
      var   Command:myrecord;   
      begin   
              if   CheckBox1.Checked   then   
              begin   
                      command.Flag   :=   0;   
                      command.Text   :=   'This   is   Text';   
              end   
              else   
              begin   
                      command.Flag   :=   1;   
                      //初始化数组   
        
              end;   
              ClientSocket.Socket.SendBuf(Command,SIZEOF(Command));   
      end;   
        
      procedure   TForm1.FormCreate(Sender:   TObject);   
      begin   
              ServerSocket.Active   :=   true;   
              ClientSocket.Active   :=   true;   
      end;   
        
      procedure   TForm1.ServerSocketClientRead(Sender:   TObject;   
          Socket:   TCustomWinSocket);   
      var   rec:myrecord;   
              i:   integer;   
      begin   
            Socket.ReceiveBuf(rec,Socket.ReceiveLength);   
            if   rec.Flag   =   0   then   
                      Edit2.Text   :=   rec.Text   
            else   
            begin   
            for   i   :=   Low(rec.myArray)   to   High(rec.myArray)   do   
                      ComboBox1.Items.Add(IntToStr(rec.myarray[i]))   
            end;             
        
        
      end;   
        
      end.