• 利用TcpClient TcpListener 实现发送图片


    点击此处下载源代码

    客户端:实现向服务器发送文件

    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.IO;

    using System.Net.Sockets;

    using System.Net;

     

    namespace tcpclient

    {

        class tcpclient

        {

            private static int portNum = 11000;

            static void Main(string[] args)

            {

                //第一步:读取文件

                Console.WriteLine("本程序实现向服务器发送文件...");

                FileStream fs = File.Open("http://www.cnblogs.com/img.gif", 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());

                }

            }

        }

    }

    服务器端:不断接收客户端的输入

    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.IO;

    using System.Net.Sockets;

    using System.Net;

     

    namespace tcpfile

    {

        class tcpserver

        {

            private const int portNum = 11000;

            static void Main(string[] args)

            {

                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(new Random().Next().ToString() + ".gif", FileMode.CreateNew);

                    int bytesRead = 0;

                    do

                    {

                        bytesRead = ns.Read(tempBuffer, 0, 4096);

                        fs.Write(tempBuffer, 0, bytesRead);

                    }while (bytesRead > 0);

                   

                    fs.Close();

                    client.Close();

                    Console.WriteLine("file accepted.");

                  

                }

                listener.Stop();

            }

     

        }

    }

     

    /* 如果不是文件的话,可以在内存中存储一个临时内存流,以便后续处理,如:赋给Image控件,压缩流等。

     * 一种典型的从客户端读取流的方法

       NetworkStream clientStreams = client.GetStream();

       int bufferSize = 4096;

       byte[] responseBuffer = new byte[bufferSize];

       MemoryStream memStream = new MemoryStream();

       int bytesRead = 0;

       do

       {

           bytesRead = clientStream.Read(responseBuffer, 0, bufferSize);

           memStream.Write(responseBuffer, 0, bytesRead);

        } while (bytesRead > 0);

    */

     

    /*

     * 这种模式,是不被 NetworkStream clientStreams = client.GetStream(); 所支持的

    byte[] buffer = new byte[clientStreams.Length];

    clientStream.Read(buffer, 0, (int)fs.Length);

    */

  • 相关阅读:
    POJ 1287 Networking
    2019 牛客多校第六场 D Move
    2019 牛客多校第六场 J Upgrading Technology
    2019 牛客多校第六场 B Shorten IPv6 Address
    POJ 1251 Jungle Roads
    POJ 3268 Silver Cow Party
    POJ 3259 Wormholes
    Codeforces Round #596 (Div. 1, based on Technocup 2020 Elimination Round 2)
    Educational Codeforces Round 75 (Rated for Div. 2)
    【知识点】多项式乘法
  • 原文地址:https://www.cnblogs.com/qqhfeng/p/1578945.html
Copyright © 2020-2023  润新知