2013-04-26 3 views
2

Я не знаю точно, что означает сокет. Сервер работает на определенном компьютере и имеет сокет, привязанный к определенному номеру порта. Сервер просто ждет, слушая сокет для клиента, чтобы сделать запрос на соединение. Когда сервер принимает соединение, он получает новый сокет, связанный с одним и тем же локальным портом, а также его удаленная конечная точка, установленная на адрес и порт клиента. Ему нужен новый сокет, чтобы он мог продолжать прослушивать исходный сокет для запросов на соединение, стремясь удовлетворить потребности подключенного клиента.Что такое Socket

Итак, сокет - это какой-то класс, созданный в памяти? А для каждого клиентского соединения создается новый экземпляр этого класса в памяти? Внутри сокета записывается локальный порт и порт и IP-номер клиента, который подключен. Может ли кто-нибудь объяснить мне более подробно определение сокета?

Благодаря

+0

Я думаю, что у вас это уже есть ... – stdcall

+1

Пожалуйста, проверьте http://stackoverflow.com/faq#questions – gprathour

ответ

8

Сокет эффективно тип дескриптора файла, за которым может лежать сетевой сеанс.

Вы можете читать и записывать его (в основном), как и любой другой дескриптор файла, и данные поступают из другого конца сеанса.

Конкретные действия, которые вы описываете, относятся к серверному концу сокета. Сервер устанавливает (привязывается к) сокет, который может использоваться для приема входящих соединений. После принятия вы получаете еще один сокет для установленного сеанса, чтобы сервер мог вернуться и прослушивать исходный сокет для большего количества входящих соединений.

Как они представлены в памяти, зависит от уровня абстракции.

На самом низком уровне в C это просто дескрипторы файлов, небольшое целое число. Однако у вас может быть класс Socket, который инкапсулирует поведение низкоуровневого сокета.

+0

Было бы более точным сказать, что «за ним лежит конечная точка * сетевой сессии». – EJP

0

В соответствии с "TCP/IP сокетов в C-Практическое руководство для программистов" Майкл Дж Doonahoo & Kenneth L. Calvert (Chptr 1, раздел 1.4, Pg 7):

Гнездо представляет собой абстракция, через которую приложение может отправлять и получать данные, во многом так же, как открытый файл позволяет приложению читать и записывать данные в стабильное хранилище. Сокет позволяет приложению «подключаться» к сети и связывать с другими приложениями, которые также подключены к одной сети. Информация, записанная в сокет приложением на одной машине, может быть , прочитанной приложением на другой машине, и наоборот.

Обратитесь к этой книге, чтобы получить ясность относительно сокетов с точки зрения программистов.