能发送数据和接收数据的例子最好是异步的学习一下谢谢了!

解决方案 »

  1.   

    server:
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;  //可以使用套接字
    using System.Threading;  //可以使用多线程
    namespace threadtcpclient
    {
        /// <summary>
        /// 服务器监听类,用于监听客户端连接,把建立好连接的socket传递给ClientThread类接受数据
        /// </summary>
        class Threadtcpserver
        {
            private Socket server;
            public Threadtcpserver()
            {
                IPEndPoint iep = new IPEndPoint(IPAddress .Any ,3130);
                server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            // 将套接字与本地终结点绑定
                server.Bind(iep);            //在本地3130端口号上进行监听
                server.Listen(1000);
                Console.WriteLine("等待客户机进行连接......");
                while (true)
                {
                    // 得到包含客户端信息的套接字,无接入时回阻塞在这
                    Socket client = server.Accept();                //创建消息服务线程对象
                    ClientThread newclient = new ClientThread(client);                //把ClientThread 类的ClientService方法委托给线程
                    Thread newthread = new Thread(new ThreadStart(newclient.ClientService));                // 启动消息服务线程
                    newthread.Start();
                }
            }
            static void Main(string[] args)
            {
                Threadtcpserver instance = new Threadtcpserver();
            }
        }
        /// <summary>
        /// 接收类,有建立了连接的socket句柄,负责接受发送数据
        /// </summary>
        public  class ClientThread
        {
            public Socket service;
            public static int connections = 0;//连接数
            public  string c_ip;//客户端的ip信息
            int receive_bytes;
            public ClientThread(Socket clientsocket)
            {
                //service对象接管对消息的控制
                this.service = clientsocket;
            }
            public void ClientService()
            {
                String data = null;
                byte[] bytes = new byte[1024];
                if (service != null)
                {
                    connections++;
                    IPEndPoint iep = service.RemoteEndPoint as IPEndPoint;
                    c_ip=iep.Address .ToString ()+":"+iep .Port .ToString ();
                }
                Console.WriteLine("与客户端[{1}]连接建立,现在连接数{0}", connections,c_ip);
                try
                {
                    while ((receive_bytes = service.Receive(bytes)) != 0)
                    {
                        data = System.Text.Encoding.ASCII.GetString(bytes, 0, receive_bytes);
                        Console.WriteLine("收到[{1}]的数据: {0}", data, c_ip);                    // 处理客户端发来的消息,这里是转化为大写字母
                        data = data.ToUpper();
                        byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);                    // 发送一条应答消息
                        service.Send(msg);                    Console.WriteLine("发送的数据: {0}", data);
                    }
                }
                catch (Exception receive_send)
                {
                    //一般是Socket.SocketException 
                    //Console.WriteLine(receive_send.ToString ());
                    Console.WriteLine("远程客户端[{0}]异常关闭连接",c_ip);
                }
                finally
                {
                    //关闭套接字
                    service.Close();
                    connections--;
                    Console.WriteLine("与客户端[{1}]断开连接,现在有{0} 个连接数", connections, c_ip);
                }
            }
        }
    }client:
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using System.Net;
    using System.Net.Sockets;namespace NetworkStreamClient
    {
        class Program
        {
            static void Main(string[] args)
            {
                try
                {
                    TcpClient newclient = new TcpClient();
                    newclient.Connect("localhost",3130);//可改成ip地址              
                    NetworkStream stm = newclient.GetStream();
                    byte[] sendbytes = Encoding.ASCII.GetBytes("data is coming"+" here."); ;                stm.Write(sendbytes, 0, sendbytes.Length);
                                   newclient.Close();
                    Console.Read();            }
                catch (Exception e)
                {
                    //输出异常信息
                    Console.WriteLine(e.ToString());
                    Console.Read();
                }
                finally
                { }
            }
      

  2.   

    给你个 TCP异步的方法把~~http://blog.csdn.net/zgke/archive/2009/01/20/3838844.aspx
      

  3.   

           //本机ip地址
            private string localIP;        //本机监听端口号
            private int localPort = 0;        //服务器端ip地址
            private string serverIP;        //服务器端端口号
            private int serverPort = 0;
            //网络通讯对象实例
            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);//实例化Socket        /// <summary>
            /// UDP发送函数
            /// </summary>
            /// <param name="send_message">发送的信息体</param>
            /// <returns>终端返回的UDP数据包,数据类型:字节数组,没有返回值时为空数组</returns>
            public byte[] sendMessage(byte[] send_message, bool waite)
            {
                IPAddress selfIP = IPAddress.Parse(localIP);
                IPEndPoint selfEP = new IPEndPoint(selfIP, 0);            IPAddress sIP = IPAddress.Parse(serverIP);
                IPEndPoint serverEP = new IPEndPoint(sIP, serverPort);
                int count = 0;
     
                serverEP = new IPEndPoint(sIP, serverPort);
                EndPoint remort = (EndPoint)serverEP;
                socket.SendTo(send_message, send_message.Length, SocketFlags.None, serverEP);//发送指令
                if (waite == false)
                {
                    return null;
                }            //socket.ReceiveTimeout = time;
                byte[] result = new byte[1024];
                try
                {
                    count = socket.ReceiveFrom(result, result.Length, SocketFlags.None, ref remort);//接收指令
                    byte[] newResult = new byte[count];
                    Array.Copy(result, newResult, count);
                    return newResult;
                }
                catch
                {
                    return null;
                }
            }
      

  4.   

    http://www.cnblogs.com/ltp/archive/2005/12/03/289680.html
    http://www.cnblogs.com/rainlake/archive/2005/09/06/230753.html楼主请参考