Существует легкая библиотека json для C #, называемая SimpleJson, которую можно найти по адресу http://simplejson.codeplex.com https://github.com/facebook-csharp-sdk/simple-json
Он поддерживает .net 3.5+, silverlight и Windows 7 телефона.
Поддерживает динамический для .net 4.0
Также может быть установлен как пакет nuget
Install-Package SimpleJson
Во-первых, "порт" - это просто номер. Все, что "соединение с портом" на самом деле представляет собой пакет, номер которого указан в поле заголовка "порт назначения".
Итак, на ваш вопрос есть два ответа: один для протоколов с состоянием и один для протоколов без состояния.
Для протокола без состояния (т.е. UDP) проблемы нет, потому что "соединений" не существует - несколько человек могут посылать пакеты на один и тот же порт, и их пакеты будут приходить в любой последовательности. Никто никогда не находится в состоянии "подключен".
Для протокола с состоянием (например, TCP) соединение идентифицируется 4 кортежем, состоящим из портов источника и назначения и IP-адресов источника и назначения. Таким образом, если две разные машины подключаются к одному и тому же порту на третьей машине, существует два разных соединения, поскольку IP-адреса источника отличаются. Если одна и та же машина (или две машины за NAT или иным образом разделяющие один и тот же IP-адрес) дважды подключается к одному удаленному концу, соединения различаются по порту источника (который обычно является случайным портом с высоким номером).
Проще говоря, если я дважды подключаюсь к одному и тому же веб-серверу с моего клиента, эти два соединения будут иметь разные порты источника с моей точки зрения и порты назначения с точки зрения веб-сервера. Таким образом, нет никакой двусмысленности, даже если оба соединения имеют одинаковые IP-адреса источника и назначения.
Порты - это способ мультиплексирования IP-адресов, чтобы разные приложения могли прослушивать одну и ту же пару IP-адрес/протокол. Пока приложение не определит свой собственный протокол более высокого уровня, мультиплексировать порт невозможно. Если два соединения, использующие один и тот же протокол, одновременно имеют идентичные IP-адреса источника и назначения и идентичные порты источника и назначения, они должны быть одним и тем же соединением.
Обычно для каждого подключающегося клиента сервер создает дочерний процесс, который взаимодействует с клиентом (TCP). Родительский сервер передает дочернему процессу созданный сокет, который обменивается данными с клиентом.
Когда вы отправляете данные в сокет с дочернего сервера, стек TCP в ОС создает пакет, идущий обратно к клиенту, и устанавливает "порт от" на 80.