c# - 指定的参数超出有效值范围。参数名称: size

标签 c# sockets exception

对于任何类型的编程网络,我都是新手。尝试创建简单的套接字服务器程序时,出现以下错误:

Specified argument was out of the range of valid values.
Parameter name: size



这是我的服务器代码:
class Program
{
    private static IPAddress localServerIP = IPAddress.Parse("10.114.130.223");
    private static TcpListener serverSocket;
    private static TcpClient clientSocket;

    private static int requestCount = 0;

    static void Main(string[] args)
    {
        serverSocket = new TcpListener(localServerIP, 8888);
        clientSocket = default(TcpClient);

        serverSocket.Start();
        Console.WriteLine(" >> Server Started\n");
        clientSocket = serverSocket.AcceptTcpClient();
        Console.WriteLine(" >> Accept connection from client");
        requestCount = 0;

        while (true)
        {
            try
            {
                requestCount++;
                NetworkStream networkStream = clientSocket.GetStream();
                byte[] dataBuffer = new byte[10025];
                networkStream.Read(dataBuffer, 0, (int)clientSocket.ReceiveBufferSize);

                string dataFromClient = Encoding.ASCII.GetString(dataBuffer);
                dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));
                Console.WriteLine(" >> Data from client - " + dataFromClient);

                string serverResponse = "Last Message from client" + dataFromClient;

                byte[] sendBytes = Encoding.ASCII.GetBytes(serverResponse);
                networkStream.Write(sendBytes, 0, sendBytes.Length);
                networkStream.Flush();
                Console.WriteLine(" >> " + serverResponse);

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

        }

    }
}

这是我的客户
public partial class Form1 : Form
{

    private TcpClient clientSocket;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        msg("Client Started");
        clientSocket = new TcpClient();
        try
        {
            clientSocket.Connect(IPAddress.Parse("10.114.130.223"), 8888);
        }
        catch
        {
            textBox1.AppendText(" >> Server unavailable\n");
        }
        statusLabel.Text = "Client Socket Program - Server Connected";
    }

    private void sendBtn_Click(object sender, EventArgs e)
    {
        NetworkStream serverStream = clientSocket.GetStream();
        byte[] outStream = Encoding.ASCII.GetBytes(textBox2.Text + "$");
        serverStream.Write(outStream, 0, outStream.Length);
        serverStream.Flush();

        byte[] inStream = new byte[10025];
        serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize);
        string returnData = Encoding.ASCII.GetString(inStream);
        msg(returnData);
        textBox2.Text = "";
        textBox2.Focus();

    }

    public void msg(string mesg)
    {
        textBox1.Text = textBox1.Text + Environment.NewLine + " >> " + mesg;
    }
}

任何帮助或指导或解释将不胜感激。

最佳答案

是来自

networkStream.Read(dataBuffer, 0, (int)clientSocket.ReceiveBufferSize);

或来自
dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));

阅读NetworkStream.Read Exceptionssubstring exceptions的文档。

关于c# - 指定的参数超出有效值范围。参数名称: size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39925086/

相关文章:

java - SAXParseException 本地化

c# - 如何在没有 Thread.Sleep() 的情况下让我的项目休眠?

javascript - Socket.io 没有发出值

python - Python套接字errno 32损坏的管道

c++如何在while循环中进行异常处理以发现输入错误

c# - Excel 错误 HRESULT : 0x800A03EC while trying to get range with cell's name

c# - 如何使用 Entity Framework 和 Identity 解决对象处置异常 ASP.NET Core

c# - 使用 Microsoft.PowerShell.Commands 找不到命名空间 'CopyItemCommand'

c# - WPF,单击 TextBox 应检查 RadioButton

本地主机上的 Java 和 SSL