C# 通过网络C发送数据#

C# 通过网络C发送数据#,c#,network-programming,C#,Network Programming,我尝试通过网络发送字符串,这是我的代码: IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 25); TcpClient client = new TcpClient(serverEndPoint); Socket socket = client.Client; byte[] data = Encoding.ASCII.GetBytes(response); s

我尝试通过网络发送字符串,这是我的代码:

 IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 25);

    TcpClient client = new TcpClient(serverEndPoint);
    Socket socket = client.Client;

    byte[] data = Encoding.ASCII.GetBytes(response);

    socket.Send(data, data.Length, SocketFlags.None);

    socket.Close();
    client.Close();

当我运行它时,我得到System.Net.Sockets.SocketException

如果您使用的是无连接协议,则必须在调用Send之前调用Connect,否则Send将抛出SocketException。如果您使用的是面向连接的协议,则必须使用Connect建立远程主机连接,或使用Accept接受传入连接。 提及

假设您使用的是无连接协议,代码应该是这样的

string response = "Hello";
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");

if (ipAddress != null)
{
    IPEndPoint serverEndPoint = new IPEndPoint(ipAddress, 25);
    byte[] receiveBuffer = new byte[100];

    try
    {
        using (TcpClient client = new TcpClient(serverEndPoint))
        {
            using (Socket socket = client.Client)
            {
                socket.Connect(serverEndPoint);

                byte[] data = Encoding.ASCII.GetBytes(response);

                socket.Send(data, data.Length, SocketFlags.None);

                socket.Receive(receiveBuffer);

                Console.WriteLine(Encoding.ASCII.GetString(receiveBuffer));
            }
        }
    }
    catch (SocketException socketException)
    {
        Console.WriteLine("Socket Exception : ", socketException.Message);
        throw;
    }
}

下次,请尝试包含异常消息以解释实际出现的错误。

如果您使用的是无连接协议,则必须在调用Send之前调用Connect,否则Send将抛出SocketException。如果您使用的是面向连接的协议,则必须使用Connect建立远程主机连接,或使用Accept接受传入连接。 提及

假设您使用的是无连接协议,代码应该是这样的

string response = "Hello";
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");

if (ipAddress != null)
{
    IPEndPoint serverEndPoint = new IPEndPoint(ipAddress, 25);
    byte[] receiveBuffer = new byte[100];

    try
    {
        using (TcpClient client = new TcpClient(serverEndPoint))
        {
            using (Socket socket = client.Client)
            {
                socket.Connect(serverEndPoint);

                byte[] data = Encoding.ASCII.GetBytes(response);

                socket.Send(data, data.Length, SocketFlags.None);

                socket.Receive(receiveBuffer);

                Console.WriteLine(Encoding.ASCII.GetString(receiveBuffer));
            }
        }
    }
    catch (SocketException socketException)
    {
        Console.WriteLine("Socket Exception : ", socketException.Message);
        throw;
    }
}

下次,请尝试包含异常消息以解释实际出现的错误。

您确定该端口上有监听内容吗?尝试打开一个不存在的服务器的套接字肯定会导致套接字异常。我暂时否决了您的投票,因为您未能显示伴随SocketException的消息。如果愿意,请重新测试您的应用程序,然后向我们提供
SocketException.Message
的内容以及任何内部异常的类型和
Message
内容。这有助于我们诊断您的问题。您确定该端口上有监听内容吗?尝试打开一个不存在的服务器的套接字肯定会导致套接字异常。我暂时否决了您的投票,因为您未能显示伴随SocketException的消息。如果愿意,请重新测试您的应用程序,然后向我们提供
SocketException.Message
的内容以及任何内部异常的类型和
Message
内容。这有助于我们诊断您的问题。