1

これを修正する方法がわかりませんが、特にこの行で問題が発生しています。新しい System.ArgumentException("Syntax: timeclnt ServerName PortNumber 1"); をスローします。……一体何をすればいいのか?サーバー アプリケーションには、リッスンするポート番号を提供する必要がありますが、どのようにすればよいのでしょうか?

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

public class TimeClient
{
    public static int Main(String[] args)
    {
        if (args.Length < 2 || args.Length > 2)
            throw new System.ArgumentException("Syntax: timeclnt ServerName PortNumber 1");

        String hostName = args[0];
        int portNum = Int32.Parse(args[1]);

        try
        {
            // Define a string to send to the server
            string stringData = "From the timeClient";

            // Encode it properly
            byte[] data = Encoding.ASCII.GetBytes(stringData);

            // Define a UDP client connection
            UdpClient client = new UdpClient();

            // Send some data to the server
            client.Send(data, data.Length, hostName, portNum);

            //where to listen for a UDP response
            IPEndPoint recvpt = new IPEndPoint(IPAddress.Any, 0);

            // get the data back from the server
            byte[] receivedData = client.Receive(ref recvpt);

            // output the data received
            Console.WriteLine("{0}", Encoding.ASCII.GetString(receivedData));

            // all done
            client.Close();
        }

        catch (Exception e)
        {
            // display an error
            Console.WriteLine(e.ToString());
        }

        return 0;
    }
}
4

2 に答える 2

0

あなたのif状態から推測すると、あなたは正確に2つのパラメータを渡していない。3つのパラメーターが必要な場合は、条件を次のように変更します。

 if (args.Length < 3 || args.Length > 3)
于 2013-03-03T05:56:07.123 に答える
0

私のコメントで述べたように:

System.ArgumentException("構文: timeclnt ServerName PortNumber 1");

これは、コードに 3 つの引数が渡されることを意味します: ServerName、PortNumber、および 1

メソッドに 3 つの引数を渡すと、if ステートメントを次のように変更する必要があります。

if (args.Length != 3)
于 2013-03-03T15:17:37.603 に答える