На вопрос ОП уже получен хороший ответ, но заголовок достаточно широк, так что я думаю, что он выигрывает от следующего учебника:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace consolePlay
{
class Program
{
static void Main(string[] args)
{
Program.test(new DateTime());
Program.test(null);
//Program.test(); // <<< Error.
// "No overload for method 'test' takes 0 arguments"
// So don't mistake nullable to be optional.
Console.WriteLine("Done. Return to quit");
Console.Read();
}
static public void test(DateTime? dteIn)
{
Console.WriteLine("#" + dteIn.ToString() + "#");
}
}
}
выход:
#1/1/0001 12:00:00 AM#
##
Done. Return to quit
Это определенно сообщения. «Пакет» - это блок протокола уровня 3 (в терминологии ISO), такой как IP-пакет; а «дейтаграмма» - это блок уровня 1 или уровня 2, такой как несколько дейтаграмм Ethernet, которые могут составлять фрагменты IP-пакета.
Таким образом, сообщение может быть разделено на несколько пакетов, особенно если вы: re использует протокол потоковой передачи, такой как TCP, и пакет может быть разделен на несколько дейтаграмм.
Просто мое мнение. Вероятно, это зависит от того, на каком уровне вы работаете. Когда я думаю обо всей передаче (всех заголовках, данных и т. Д.), Я бы назвал это сообщением. Пакет, особенно в TCP / IP, - это просто часть сообщения. По сети проталкиваются несколько пакетов, составляющих все сообщение.
Я думаю, что пакет относится к фрагментам данных, передаваемых на более низком уровне, таком как Ethernet, и сообщение используется для обмена информацией более высокого уровня.
imo они в основном означают то же самое ...
edit:
Существует также другая терминология, называемая кадром, которая определяется в RFC 1122 как «единица передачи в протоколе канального уровня и состоит из заголовка канального уровня, за которым следует пакет». [википедия]