Использование ping в C # достигается с помощью метода Ping.Send(System.Net.IPAddress)
, который запускает запрос ping к предоставленному действительному IP-адресу или URL-адресу и получает ответ в ответ, который называется Протокол сообщений Интернета (ICMP) Packet , который содержит заголовок 20 байтов, который содержит данные ответа от сервера pinged, который получил запрос ping, пространство имен .Net framework System.Net.NetworkInformation
содержит класс с именем PingReply
класс, который имеет свойства, предназначенные для перевода ICMP
и предоставить полезную информацию о сетях с пинговым сервером, например:
Ниже приведен простой пример использования WinForms
для демонстрации того, как ping работает в c #, предоставив действительный IP-адрес в textBox1
и нажав button1
, мы создаем экземпляр Ping class
, a локальная переменная PingReply
, локальная строка переменной для хранения IP-адреса или URL-адреса, затем мы назначаем локальную переменную PingReply
, которую мы создали, на метод отправки ping, затем проверяем, был ли запрос успешным, сравнивая состояние ответа к состоянию свойства IPAddress.Success
, затем мы извлекаем из PingReply
локальную переменную информацию, которую нам нужно отобразить для пользователя, которые описаны выше:
using System;
using System.Net.NetworkInformation;
using System.Windows.Forms;
namespace PingTest1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Ping p = new Ping();
PingReply r;
string s;
s = textBox1.Text;
r = p.Send(s);
if (r.Status == IPStatus.Success)
{
lblResult.Text = "Ping to " + s.ToString() + "[" + r.Address.ToString() + "]" + " Successful"
+ " Response delay = " + r.RoundtripTime.ToString() + " ms" + "\n";
}
}
private void textBox1_Validated(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(textBox1.Text) || textBox1.Text == "")
{
MessageBox.Show("Please use valid IP or web address!!");
}
}
}
}
Использование незначительных тиков, как указано в потоке, опубликованном DavidG, должно работать. Ниже приведен MWE, который я адаптировал для вашей конкретной проблемы, заставляя основные тики появляться в первом из каждого месяца и используя малые тики для размещения меток между основными тиками:
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import datetime
# Generate some data for example :
yr = 2014
fig, ax = plt.subplots()
x0 = datetime.datetime(yr, 1, 1)
x = np.array([x0 + datetime.timedelta(days=i) for i in range(365)])
y1 = np.sin(2*np.pi*np.arange(365)/365) + np.random.rand(365)/5
y2 = np.sin(2*np.pi*np.arange(365)/365) + np.random.rand(365)/5 - 1
# Draw high and low temperatures lines :
ax.plot(x, y1, color='#c83c34')
ax.plot(x, y2, color='#28659c')
ax.fill_between(x, y2, y1, facecolor='#daecfd', alpha=0.5)
# Force the major ticks position on the first of each month and hide labels:
xticks = [datetime.datetime(yr, i+1, 1) for i in range(12)]
xticks.append(datetime.datetime(yr+1, 1, 1))
ax.set_xticks(xticks)
ax.tick_params(axis='both', direction='out', top=False, right=False)
ax.axis([xticks[0], xticks[-1], -2.5, 1.5])
ax.set_xticklabels([])
# CODE GOES HERE TO CENTER X-AXIS LABELS...
labels = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
mticks = ax.get_xticks()
ax.set_xticks((mticks[:-1]+mticks[1:])/2, minor=True)
ax.tick_params(axis='x', which='minor', length=0)
ax.set_xticklabels(labels, minor=True)
fig.tight_layout()
plt.show()
Почти, Jean-Sébastien . Все выглядит идеально, но в прошлом месяце. Это не отображается.
Ваше решение немного изменилось:
fig, ax = plt.subplots()
# Draw high and low temperatures lines:
plt.plot(x, y1, color = '#c83c34')
plt.plot(x, y2, color = '#28659c')
# Fill area between lines:
plt.gca().fill_between(x,
y2, y1,
facecolor='#daecfd',
alpha=0.5)
# Force major ticks on a monthly time scale only:
locator = mpl.dates.MonthLocator()
ax.xaxis.set_major_locator(locator)
# Hide major labels and set axis limits:
ax.set_xticklabels([])
ax.tick_params(axis='both', direction='out')
ax.axis(xmin=datetime.datetime(2014, 1, 1),
xmax=datetime.datetime(2014, 12, 31),
ymin=-50, ymax=50)
labels = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
mticks = ax.get_xticks()
ax.set_xticks((mticks[:-1]+mticks[1:])/2, minor=True)
ax.tick_params(axis='x', which='minor', length=0)
ax.set_xticklabels(labels, minor=True)
plt.show()
Есть ли какие-нибудь подсказки о том, что необходимо включить декабрь в метки по оси x? Во всяком случае, очень.
plt.draw()
после установки пределов оси?
– Jean-Sébastien
3 April 2017 в 17:58