COMPUTER_LZY

要输就输给追求,要嫁就嫁给幸福

导航

TCPServer、TCPClient

TCPServer:

TCP 网络客户端侦听连接。
可使用 TcpClient 或 Socket 来连接 TcpListener。可使用 IPEndPoint、本地 IP 地址及端口号或者仅使用端口号,来创建 TcpListener。可以将本地 IP 地址指定为 Any,将本地端口号指定为 0(如果希望基础服务提供程序为您分配这些值)。如果您选择这样做,可在连接套接字后使用 LocalEndpoint 属性来标识已指定的信息。

Start 方法用来开始侦听传入的连接请求。Start 将对传入连接进行排队,直至您调用 Stop 方法或它已经完成 MaxConnections 排队为止。可使用 AcceptSocket 或 AcceptTcpClient 从传入连接请求队列提取连接。这两种方法将阻止。如果要避免阻止,可首先使用 Pending 方法来确定队列中是否有可用的连接请求。

 bool done = false;
            //TcpListener listener = new TcpListener(portNum); //根据VS2005 MSDN 此方法已经过时,不再使用
            
// IPEndPoint类将网络标识为IP地址和端口号
            TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Any, portNum));
            listener.Start();
            while (!done)
            {
                Console.Write("Waiting for connection...");
                TcpClient client = listener.AcceptTcpClient();
                Console.WriteLine("Connection accepted.");
                NetworkStream ns = client.GetStream();
               
                byte[] tempBuffer = new byte[4096];
                FileStream fs = File.Open("D:\\tcpServer"+new Random().Next().ToString() + ".gif", FileMode.CreateNew);
                int bytesRead = 0;
                do
                {
                    bytesRead = ns.Read(tempBuffer, 04096);
                    fs.Write(tempBuffer, 0, bytesRead);
                }while (bytesRead > 0);
                
                fs.Close();
                client.Close();
                Console.WriteLine("file accepted.");               
            }
            listener.Stop();

TCPClient:

TcpClient 为 TCP 网络服务提供客户端连接。

TcpClient 类提供了一些简单的方法,用于在同步阻塞模式下通过网络来连接、发送和接收流数据。

为使 TcpClient 连接并交换数据,使用 TCP ProtocolType 创建的 TcpListenerSocket 必须侦听是否有传入的连接请求。可以使用下面两种方法之一连接到该侦听器:

  • 创建一个 TcpClient,并调用三个可用的 Connect 方法之一。
  • 使用远程主机的主机名和端口号创建 TcpClient。此构造函数将自动尝试一个连接。
注意   如果要在同步阻塞模式下发送无连接数据报,请使用 UdpClient 类。

对继承者的说明:  要发送和接收数据,请使用 GetStream 方法来获取一个 NetworkStream。调用 NetworkStreamWriteRead 方法与远程主机之间发送和接收数据。使用 Close 方法释放与 TcpClient 关联的所有资源。

 

//第一步:读取文件
            Console.WriteLine("本程序实现向服务器发送文件...");
            FileStream fs = File.Open("D:\\xml\\ok.png", FileMode.Open);
            byte[] buffer = new byte[fs.Length];
            fs.Read(buffer, 0, (int)fs.Length);
            fs.Close();

            //第二步:发送文件
            try
            {
                TcpClient client = new TcpClient(System.Net.Dns.GetHostName(), portNum);
                NetworkStream ns = client.GetStream();
                ns.Write(buffer, 0, buffer.Length);
                ns.Close();
                client.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
 

posted on 2011-11-08 15:00  CANYOUNG  阅读(31612)  评论(1编辑  收藏  举报