情况是这样的~ WinForm 项目
客户端向服务端发送一个 SQL 语句: SELECT * FROM Table,
服务端在执行后,如何将结果(DataTable 对象)发送给 客户端呢?谢谢

解决方案 »

  1.   

    .NET Remoting
    Web Service
    WPF
    甚至可以直接TCP...只要你愿意...条条大路...
      

  2.   


    谢谢 用 TCP 如何实现呢?要用得 TcpListener 及 TcpClient 对象呢? 主要思路?
      

  3.   

    你可以自己定义格式,不过.net已经实践了这个功能可以将DataTable放如DataSet中,然后用DataSet.WriteXmlSchema()将他转换为XML发送给可户端,可户端用DataSet.ReadXmlSchema()来创建相同的DataSet,包括其中的DataTableDataSet也支持序列化(我记得DataTable不支持,放入DataSet中就好了)
      

  4.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;namespace UDPClient
    {
        class Program
        {
            static void Main(string[] args)
            {
                byte[] data = new byte[1024];
                string input ,stringData;            //构建TCP 服务器            Console.WriteLine("This is a Client, host name is {0}", Dns.GetHostName());            //设置服务IP,设置TCP端口号
                IPEndPoint ipep = new IPEndPoint(IPAddress .Parse ("127.0.0.1") , 8001);            //定义网络类型,数据连接类型和网络协议UDP
                Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);            string welcome = "Hello! ";
                data = Encoding.ASCII.GetBytes(welcome);
                server.SendTo(data, data.Length, SocketFlags.None, ipep);
                IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
                EndPoint Remote = (EndPoint)sender;            data = new byte[1024];
                int recv = server.ReceiveFrom(data, ref Remote);
                Console.WriteLine("Message received from {0}: ", Remote.ToString());
                Console.WriteLine(Encoding .ASCII .GetString (data,0,recv));
                while (true)
                {
                    input = Console .ReadLine ();
                    if (input =="exit")
                        break ;
                    server .SendTo (Encoding .ASCII .GetBytes (input ),Remote );
                    data = new byte [1024];
                    recv = server.ReceiveFrom(data, ref Remote);
                    stringData = Encoding.ASCII.GetString(data, 0, recv);
                    Console.WriteLine(stringData);
                }
                Console .WriteLine ("Stopping Client.");
                server .Close ();            
            }        }
        }
      

  5.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;namespace UDPServer
    {
        class Program
        {
            static void Main(string[] args)
            {
                int recv;
                byte[] data = new byte[1024];             //构建TCP 服务器            //得到本机IP,设置TCP端口号         
                IPEndPoint ipep = new IPEndPoint(IPAddress.Any , 8001);
                Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram , ProtocolType.Udp);            //绑定网络地址
                newsock.Bind(ipep);            Console.WriteLine("This is a Server, host name is {0}",Dns.GetHostName());            //等待客户机连接
                Console.WriteLine("Waiting for a client..."); //得到客户机IP
                IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
                EndPoint Remote = (EndPoint)(sender);
                recv = newsock.ReceiveFrom(data, ref Remote);
                Console .WriteLine ("Message received from {0}: ", Remote.ToString ());
                Console .WriteLine (Encoding .ASCII .GetString (data ,0,recv )); //客户机连接成功后,发送欢迎信息
                string welcome = "Welcome ! ";            //字符串与字节数组相互转换
                data  = Encoding .ASCII .GetBytes (welcome ); //发送信息
                newsock .SendTo (data ,data.Length ,SocketFlags .None ,Remote );
                while (true )
                {
                    data =new byte [1024];
    //发送接受信息
                    recv =newsock.ReceiveFrom(data ,ref Remote);
                    Console .WriteLine (Encoding .ASCII .GetString (data ,0,recv));
                    newsock .SendTo (data ,recv ,SocketFlags .None ,Remote );
                }
            }        }
        }
      

  6.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;namespace UDPServer
    {
        class Program
        {
            static void Main(string[] args)
            {
                int recv;
                byte[] data = new byte[1024];             //构建TCP 服务器            //得到本机IP,设置TCP端口号         
                IPEndPoint ipep = new IPEndPoint(IPAddress.Any , 8001);
                Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram , ProtocolType.Udp);            //绑定网络地址
                newsock.Bind(ipep);            Console.WriteLine("This is a Server, host name is {0}",Dns.GetHostName());            //等待客户机连接
                Console.WriteLine("Waiting for a client..."); //得到客户机IP
                IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
                EndPoint Remote = (EndPoint)(sender);
                recv = newsock.ReceiveFrom(data, ref Remote);
                Console .WriteLine ("Message received from {0}: ", Remote.ToString ());
                Console .WriteLine (Encoding .ASCII .GetString (data ,0,recv )); //客户机连接成功后,发送欢迎信息
                string welcome = "Welcome ! ";            //字符串与字节数组相互转换
                data  = Encoding .ASCII .GetBytes (welcome ); //发送信息
                newsock .SendTo (data ,data.Length ,SocketFlags .None ,Remote );
                while (true )
                {
                    data =new byte [1024];
    //发送接受信息
                    recv =newsock.ReceiveFrom(data ,ref Remote);
                    Console .WriteLine (Encoding .ASCII .GetString (data ,0,recv));
                    newsock .SendTo (data ,recv ,SocketFlags .None ,Remote );
                }
            }        }
        }
      

  7.   

    序列化成xml,然后当字符串发送.net Q群:2514097
      

  8.   

    晕,parfum乱贴代码,根本文不对题啊。真实浪费观众的时间!!!
      

  9.   

    用remoting吧很方便,你可以参考msdn上的例子!用Sockets太麻烦