Пинг и общая структура C # - Visual Studio 2010 - PullRequest
2 голосов
/ 15 октября 2011

Сначала позвольте мне дать обзор моего приложения. Я пытаюсь использовать Visual C #, чтобы сделать PING по адресу, указанному пользователем. Пользователь взаимодействует с системой, вводя адрес, который он хочет PING, в текстовое поле - пользователь затем нажимает кнопку pingButton, которая пингует нужный адрес, а затем возвращает результаты пользователю через окно сообщения.

Это только начальная стадия подачи заявки.

У меня проблема со следующим кодом:

using System;
using System.Collections.Generic;
using System.Net;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.NetworkInformation;

namespace Ping_Application
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void pingButton_Click(object sender, EventArgs e)
        {
            int timeOut = 300;
            int ttl = 300;
            string stat = "", data = "[012345678901234567890123456789]";
            PingOptions pingOpts = new PingOptions();
            pingOpts.Ttl = ttl;
            pingOpts.DontFragment = true;
            Ping pinger = new Ping();
            PingReply reply = pinger.Send(pingAddressTextBox.Equals, timeOut, Buffer, pingOpts);
            if (reply.Status.ToString() != "Success")
                stat = "Failed";
            else
                stat = reply.Status.ToString();
            pinger.Dispose();
            MessageBox.Show("Congratulations!");
        }
    }
}

Этот код из другой темы о переполнении стека - я пытаюсь понять, как работает код, а затем модифицирует его.

Ошибки:

Ошибка 1 «System.Buffer» является «типом», но используется как «переменная» Ошибка 3 Аргумент 1: невозможно преобразовать из «группы методов» в «System.Net.IPAddress»
Ошибка 4 Аргумент 3: невозможно преобразовать из 'System.Buffer' в 'byte []' Ошибка 2 Наилучшее перегруженное соответствие метода для System.Net.NetworkInformation.Ping.Send (System.Net.IPAddress, int, byte [], System.Net.NetworkInformation.PingOptions) аргументы

Как я уже сказал, я только учусь - это просто для смеха - любая помощь приветствуется.

1 Ответ

1 голос
/ 15 октября 2011

Вам необходим объект типа Buffer для передачи на pinger.Send.

Здесь у вас просто есть имя типа. Вам нужен фактический byte массив:

Ping pingSender = new Ping ();

// Create a buffer of 32 bytes of data to be transmitted.
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes (data);

// Wait 10 seconds for a reply.
int timeout = 10000;

// Set options for transmission:
// The data can go through 64 gateways or routers
// before it is destroyed, and the data packet
// cannot be fragmented.
PingOptions options = new PingOptions (64, true);

// Send the request.
PingReply reply = pingSender.Send ("www.contoso.com", timeout, buffer, options);

Источник

Здесь buffer создается из строки. Вы пропустите этот шаг.

...