第一个控制台项目,包含2个cs文件,实现的作用是:服务器端给客户端发送了一个字符串“准备给你发送”,可以运行成功。1, 客户端文件 PictureTransferClientusing System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.IO;namespace TestSocket
{
    class PictureTransferClient
    {
        static void Main()
        {
            new PictureTransferClient().t1();
        }
        public void t1()
        {
            Console.WriteLine("启动了 客户端");            try
            {
                const int bufferSize = 256;                TcpClient client = new TcpClient();
                IPHostEntry host = Dns.GetHostEntry("127.0.0.1");
                client.Connect("127.0.0.1", 8888);
                Console.WriteLine("  客户端 连接成功 ");                NetworkStream clientStream = client.GetStream();                ////
                byte[] responseBuffer = new byte[bufferSize];
                int bytesRead = 0;
                do
                {
                    bytesRead = clientStream.Read(responseBuffer, 0, bufferSize);
                }
                while (bytesRead > 0);
                string fromServer = Encoding.Default.GetString(responseBuffer);
                Console.WriteLine(fromServer);                //string sendMessage = "jintian re le a ";
                //byte[] bytesMessage = Encoding.Default.GetBytes(sendMessage);
                //clientStream.Write(bytesMessage, 0, bytesMessage.Length);
                clientStream.Close();
                client.Close();            }
            catch (ArgumentNullException ex)
            {
                Console.WriteLine("ArgumentNullException: {0}", ex);
            }
            catch (SocketException ex)
            {
                Console.WriteLine("SocketException: {0}", ex);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        
        }
    }
}2,服务器端文件 PictureTransferServerusing System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.IO;namespace TestSocket
{
    class PictureTransferServer
    {
        static void Main()
        {
            new PictureTransferServer().t2();
        }             public void t2()
        {
            
            try
            {
                string sendMessage = "准备给你发送";                TcpListener listener = new TcpListener(IPAddress.Any, 8888);
                listener.Start();                Console.WriteLine("启动了服务器端 的监听");
                const int bufferSize = 256;
                TcpClient client = listener.AcceptTcpClient();
                Console.WriteLine(" 服务器端 连接 成功");
                NetworkStream clientStream = client.GetStream();                byte[] bytesMessage = Encoding.Default.GetBytes(sendMessage);
                Console.WriteLine("服务器端的 buffer的长度是: " + bytesMessage.Length);
                clientStream.Write(bytesMessage, 0, bytesMessage.Length);                //byte[] responseBuffer = new byte[bufferSize];
                //int bytesRead = 0;
                //do
                //{
                //    bytesRead = clientStream.Read(responseBuffer, 0, bufferSize);
                //}
                //while (bytesRead > 0);
                //string fromClient = Encoding.Default.GetString(responseBuffer);
                //Console.WriteLine(fromClient);
                clientStream.Close();
                client.Close();            }
            catch (ArgumentNullException e)
            {
                Console.WriteLine("ArgumentNullException: {0}", e);
            }
            catch (SocketException e)
            {
                Console.WriteLine("SocketException: {0}", e);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }        }
    }
}
第二个控制台项目,包含2个cs文件,实现的作用是:服务器端给客户端发送了一个字符串“准备给你发送”,然后客户端给服务器端发送一个字符串“jintian re le a”,但是不能运行成功。1, 客户端文件 PictureTransferClientusing System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.IO;namespace TestSocket
{
    class PictureTransferClient
    {
        static void Main()
        {
            new PictureTransferClient().t1();
        }
        public void t1()
        {
            Console.WriteLine("启动了 客户端");            try
            {
                const int bufferSize = 256;                TcpClient client = new TcpClient();
                IPHostEntry host = Dns.GetHostEntry("127.0.0.1");
                client.Connect("127.0.0.1", 8888);
                Console.WriteLine("  客户端 连接成功 ");                NetworkStream clientStream = client.GetStream();                ////
                byte[] responseBuffer = new byte[bufferSize];
                int bytesRead = 0;
                do
                {
                    bytesRead = clientStream.Read(responseBuffer, 0, bufferSize);
                }
                while (bytesRead > 0);
                string fromServer = Encoding.Default.GetString(responseBuffer);
                Console.WriteLine(fromServer);                string sendMessage = "jintian re le a ";
                byte[] bytesMessage = Encoding.Default.GetBytes(sendMessage);
                clientStream.Write(bytesMessage, 0, bytesMessage.Length);
                clientStream.Close();
                client.Close();            }
            catch (ArgumentNullException ex)
            {
                Console.WriteLine("ArgumentNullException: {0}", ex);
            }
            catch (SocketException ex)
            {
                Console.WriteLine("SocketException: {0}", ex);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        
        }
    }
}2,服务器端文件 PictureTransferServerusing System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.IO;namespace TestSocket
{
    class PictureTransferServer
    {
        static void Main()
        {
            new PictureTransferServer().t2();
        }             public void t2()
        {
            
            try
            {
                string sendMessage = "准备给你发送";                TcpListener listener = new TcpListener(IPAddress.Any, 8888);
                listener.Start();                Console.WriteLine("启动了服务器端 的监听");
                const int bufferSize = 256;
                TcpClient client = listener.AcceptTcpClient();
                Console.WriteLine(" 服务器端 连接 成功");
                NetworkStream clientStream = client.GetStream();                byte[] bytesMessage = Encoding.Default.GetBytes(sendMessage);
                Console.WriteLine("服务器端的 buffer的长度是: " + bytesMessage.Length);
                clientStream.Write(bytesMessage, 0, bytesMessage.Length);                byte[] responseBuffer = new byte[bufferSize];
                int bytesRead = 0;
                do
                {
                    bytesRead = clientStream.Read(responseBuffer, 0, bufferSize);
                }
                while (bytesRead > 0);
                string fromClient = Encoding.Default.GetString(responseBuffer);
                Console.WriteLine(fromClient);
                clientStream.Close();
                client.Close();            }
            catch (ArgumentNullException e)
            {
                Console.WriteLine("ArgumentNullException: {0}", e);
            }
            catch (SocketException e)
            {
                Console.WriteLine("SocketException: {0}", e);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }        }
    }
}
很简单的程序,代码完全一样,为什么只能单向发送,却不能双向发送呢?
非常谢谢大家啊。