简体   繁体   中英

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

I'm extremely new to any type of networking with programming. When trying to create a simple socket server program I get the following error:

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

Here is my code for the server:

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);
            }

        }

    }
}

And this is my client

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;
    }
}

Any help or guidance or explanation would greatly be appreciated.

It's either from

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

or from

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

Read the docs for NetworkStream.Read Exceptions and for substring exceptions .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM