Разъемы (сокеты) процессоров: поколения в фотографиях
Принципы сокетов¶
Каждый процесс может создать слушающий сокет (серверный сокет) и привязать его
к какому-нибудь порту операционной системы (в UNIX непривилегированные
процессы не могут использовать порты меньше 1024). Слушающий процесс обычно
находится в цикле ожидания, то есть просыпается при появлении нового
соединения. При этом сохраняется возможность проверить наличие соединений на
данный момент, установить тайм-аут для операции и т.д.
Каждый сокет имеет свой адрес. ОС семейства UNIX могут поддерживать много
типов адресов, но обязательными являются INET-адрес и UNIX-адрес. Если
привязать сокет к UNIX-адресу, то будет создан специальный файл (файл сокета)
по заданному пути, через который смогут сообщаться любые локальные процессы
путём чтения/записи из него (см. Доменный сокет Unix). Сокеты типа INET
доступны из сети и требуют выделения номера порта.
Практические примеры
В
ÿÃÂøüõÃÂðàýøöõ ôûàúûøõýÃÂð øÃÂÿþûÃÂ÷ÃÂõÃÂÃÂàJavaScript, ð ôûÃÂàÃÂõÃÂòõÃÂðàâ Node.js. ÃÂÃÂøüõÃÂàþÃÂõýàÿÃÂþÃÂÃÂàøàòÃÂÃÂôàûø ÿÃÂøóþôÃÂÃÂÃÂàýðàÿÃÂðúÃÂøúõ, ýþà÷ðÃÂþ ÿþ÷òþûÃÂàÃÂð÷þñÃÂðÃÂÃÂÃÂàòàÃÂÃÂÃÂø.
ÃÂõñ-ÃÂþúõÃÂÃÂ
ÃÂûøõýÃÂ:
áõÃÂòõÃÂ:
ÃÂþàøûûÃÂÃÂÃÂÃÂðÃÂøàÃÂðñþÃÂàòõñ-ÃÂþúõÃÂþò:
ÃÂõüþýÃÂÃÂÃÂðÃÂøàÃÂðñþÃÂàòõñ-ÃÂþúõÃÂþò
ÃÂúòøòðûõýàòàHTTP
âðú úðú HTTP ôþûöõý ÿþÃÂÃÂþÃÂýýþ ÿÃÂþòõÃÂÃÂÃÂàúðýðû ýðàýðûøÃÂøõ ýþòÃÂàÃÂþþñÃÂõýøù, üþöýþ øÃÂÿþûÃÂ÷þòðÃÂàëóÃÂÃÂ÷ýÃÂÃÂû ÿÃÂþòõÃÂúà(dirty check) â ÿþôÃÂþô, ÿÃÂø úþÃÂþÃÂþü úûøõýàà÷ðôðýýþù ÿõÃÂøþôøÃÂýþÃÂÃÂÃÂà(ôþÿÃÂÃÂÃÂøü, úðöôÃÂõ 200 üÃÂ) ÿÃÂþòõÃÂÃÂõàýðûøÃÂøõ ýþòÃÂàÃÂþþñÃÂõýøù ýð ÃÂõÃÂòõÃÂõ.
çÃÂþñàýõ òýøúðÃÂàò XMLHttpRequest, üþöýþ øÃÂÿþûÃÂ÷þòðÃÂàñøñûøþÃÂõúàAxios. ÃÂýð ôõúûðÃÂðÃÂøòýð øàþÃÂõýàÿþýÃÂÃÂýð.
ÃÂûøõýÃÂ:
áõÃÂòõÃÂ:
socket()¶
См.также
- http://unixhelp.ed.ac.uk/CGI/man-cgi?socket+2
Создаёт конечную точку соединения и возвращает файловый дескриптор.
Принимает три аргумента:
-
domain указывающий семейство протоколов создаваемого сокета
- AF_INET для сетевого протокола IPv4
- AF_INET6 для IPv6
- AF_UNIX для локальных сокетов (используя файл)
-
type
-
SOCK_STREAM (надёжная потокоориентированная служба (сервис) или
потоковый сокет) -
SOCK_DGRAM (служба датаграмм или датаграммный
сокет) - SOCK_RAW (Сырой сокет — сырой протокол поверх сетевого уровня).
-
SOCK_STREAM (надёжная потокоориентированная служба (сервис) или
-
protocol
Протоколы обозначаются символьными константами с префиксом IPPROTO_*
(например, IPPROTO_TCP или IPPROTO_UDP). Допускается значение
protocol=0 (протокол не указан), в этом случае используется значение по
умолчанию для данного вида соединений.
Примечание
Функция возвращает −1 в случае ошибки. Иначе, она возвращает целое число,
представляющее присвоенный дескриптор.
Пример на Си
#include #include int socket(int domain, int type, int protocol);
#include #include #include #include #include #include #include #include void error(const char *msg) { perror(msg); exit(); } int main(int argc, char *argv[]) { int sockfd, portno, n; struct sockaddr_in serv_addr; struct hostent *server; char buffer256]; if (argc 3) { fprintf(stderr,"usage %s hostname port\n", argv]); exit(); } // Задаем номер порта portno = atoi(argv2]); // Создаем сокет sockfd = socket(AF_INET, SOCK_STREAM, ); if (sockfd ) error("ERROR opening socket"); // Конвертирует имя хоста в IP адрес server = gethostbyname(argv1]); if (server == NULL) { fprintf(stderr,"ERROR, no such host\n"); exit(); } // Указываем тип сокета Интернет bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; // Указаваем адрес IP сокета bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length); // Указываем порт сокета serv_addr.sin_port = htons(portno); // Устанавливаем соединение if (connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) ) error("ERROR connecting"); // Вводим сообщение из консоли printf("Please enter the message: "); bzero(buffer, 256); fgets(buffer, 255, stdin); // Отправляем данные n = write(sockfd, buffer, strlen(buffer)); if (n ) error("ERROR writing to socket"); // Сбрасываем буфер bzero(buffer, 256); // Читаем ответ n = read(sockfd, buffer, 255); if (n ) error("ERROR reading from socket"); printf("%s\n", buffer); close(sockfd); return ; }
Пример на Python
Выбор нового процессора для LGA 1156
У сокета LGA 1156 нет серьезных проблем с совместимостью материнских плат и процессоров. Тем не менее, перед покупкой нового процессора обязательно нужно свериться с официальным списком процессоров, которые поддерживаются материнской платой. Только так можно быть уверенным в том, что выбранный процессор будет работать на имеющейся материнской плате.
Для того чтобы найти список поддерживаемых процессоров вам понадобится название модели материнской платы. Узнать название модели можно с помощью программ для просмотра характеристик компьютера. В частности, можно применить программу CPU-Z. Запустив CPU-Z на компьютере и открыв вкладку «Mainboard» вы получите всю необходимую информацию о вашей плате и ее производителе.
Название модели материнской платы и ее производителя нужно ввести в любую поисковую систему. После чего перейти на страницу материнской платы на ее официальном сайте.
На странице материнской платы вы сможете найти всю необходимую вам информацию. Есть здесь и список процессоров, которые поддерживаются этой платой. Обычно он находится в разделе «Поддержка – Список процессоров» или «Support – CPU». В некоторых случаях поддерживаемые процессоры могут быть указаны в разделе «Спецификации». В этом списке будут указаны все подходящие к плате процессоры, а также версии BIOS, которые нужны для работы этих чипов.
Для того чтобы сориентировать вас в том, какие процессоры существуют для Socket LGA 1156, ниже мы приводим полный их список.
Процессоры Xeon для Socket LGA 2066
Требуется чипсет C422. Есть поддержка ECC-памяти.
Название процессора | Ядра (Потоки) | Частота | L2-кэш | L3-кэш | TDP | I/O шина | Память |
Intel Xeon W-2102 | 4 (4) | 2.9 GHz | 4 × 1 MiB | 8.25 MiB | 120 W | DMI 3.0 | 4 × DDR4-2400 |
Intel Xeon W-2104 | 4 (4) | 3.2 GHz | 4 × 1 MiB | 8.25 MiB | 120 W | DMI 3.0 | 4 × DDR4-2400 |
Intel Xeon W-2123 | 4 (8) | 3.6 GHz | 4 × 1 MiB | 8.25 MiB | 120 W | DMI 3.0 | 4 × DDR4-2666 |
Intel Xeon W-2125 | 4 (8) | 4 GHz | 4 × 1 MiB | 8.25 MiB | 120 W | DMI 3.0 | 4 × DDR4-2666 |
Intel Xeon W-2133 | 6 (12) | 3.6 GHz | 6 × 1 MiB | 8.25 MiB | 140 W | DMI 3.0 | 4 × DDR4-2666 |
Intel Xeon W-2135 | 6 (12) | 3.7 GHz | 6 × 1 MiB | 8.25 MiB | 140 W | DMI 3.0 | 4 × DDR4-2666 |
Intel Xeon W-2140B | 8 (16) | 3.2 GHz | 8 × 1 MiB | 11.00 MiB | 120 W | DMI 3.0 | 4 × DDR4-2666 |
Intel Xeon W-2145 | 8 (16) | 3.7 GHz | 8 × 1 MiB | 11.00 MiB | 140 W | DMI 3.0 | 4 × DDR4-2666 |
Intel Xeon W-2150B | 10 (20) | 3 GHz | 10 × 1 MiB | 13.75 MiB | 120 W | DMI 3.0 | 4 × DDR4-2666 |
Intel Xeon W-2155 | 10 (20) | 3.3 GHz | 10 × 1 MiB | 13.75 MiB | 140 W | DMI 3.0 | 4 × DDR4-2666 |
Intel Xeon W-2175 | 14 (28) | 2.5 GHz | 14 × 1 MiB | 19.25 MiB | 140 W | DMI 3.0 | 4 × DDR4-2666 |
Intel Xeon W-2190B | 18 (36) | 2.3 GHz | 18 × 1 MiB | 24.75 MiB | 140 W | DMI 3.0 | 4 × DDR4-2666 |
Intel Xeon W-2195 | 18 (36) | 2.3 GHz | 18 × 1 MiB | 24.75 MiB | 140 W | DMI 3.0 | 4 × DDR4-2666 |
Intel Xeon W-2223 | 4 (8) | 3.6 GHz | 4 × 1 MiB | 8.25 MiB | 120 W | DMI 3.0 | 4 × DDR4-2666 |
Intel Xeon W-2225 | 4 (8) | 4.1 GHz | 4 × 1 MiB | 8.25 MiB | 105 W | DMI 3.0 | 4 × DDR4-2933 |
Intel Xeon W-2235 | 6 (12) | 3.8 GHz | 6 × 1 MiB | 8.25 MiB | 130 W | DMI 3.0 | 4 × DDR4-2933 |
Intel Xeon W-2245 | 8 (16) | 3.9 GHz | 8 × 1 MiB | 16.5 MiB | 155 W | DMI 3.0 | 4 × DDR4-2933 |
Intel Xeon W-2255 | 10 (20) | 3.7 GHz | 10 × 1 MiB | 19.25 MiB | 165 W | DMI 3.0 | 4 × DDR4-2933 |
Intel Xeon W-2265 | 12 (24) | 3.5 GHz | 12 × 1 MiB | 19.25 MiB | 165 W | DMI 3.0 | 4 × DDR4-2933 |
Intel Xeon W-2275 | 14 (28) | 3.3 GHz | 14 × 1 MiB | 19.25 MiB | 165 W | DMI 3.0 | 4 × DDR4-2933 |
Intel Xeon W-2295 | 18 (36) | 3 GHz | 18 × 1 MiB | 24.75 MiB | 165 W | DMI 3.0 | 4 × DDR4-2933 |
Оставьте отзыв
Наша цель — сделать семейство инструментов ARK максимально полезным для вас ресурсом. Оставьте свои вопросы, комментарии или предложения здесь. Вы получите ответ в течение 2 рабочих дней.
Ваши комментарии отправлены. Спасибо за ваш отзыв.
Предоставленная вами персональная информация будет использована только для ответа на этот запрос. Ваше имя и адрес электронной почты не будут добавлены ни в какие списки рассылок, и вы не будете получать электронные сообщения от корпорации Intel без вашего запроса. Нажимая кнопку «Отправить», вы подтверждаете принятие Условий использования Intel и понимание Политики конфиденциальности Intel.
Буквенный суффикс в маркировке процессоров Intel Core для ноутбуков
Буквенный суффикс | Описание | Пример |
G | Процессор с дискретным графическим чипом. | Intel Core i7-8705G |
H | Процессор с высокопроизводительной встроенной графикой. | Intel Core i3-7100H
Intel Core i3-6100H Intel Core i7-5350H |
HK | Процессор с высокопроизводительной встроенной графикой и возможностью разгона. | Intel Core i7-7820HK
Intel Core i7-6820HK |
HQ | Процессор с высокопроизводительной встроенной графикой и 4 вычислительными ядрами. | Intel Core i7-7920HQ
Intel Core i7-6920HQ Intel Core i7-6700HQ Intel Core i7-5950HQ Intel Core i7-5850HQ Intel Core i7-5750HQ Intel Core i7-5700HQ Intel Core i7-4700HQ |
U | Процессор со сверхнизким потреблением энергии. | Intel Core i7-7500U
Intel Core i7-6600U Intel Core i5-6300U Intel Core i3-6100U Intel Core i7-5650U Intel Core i7-4550U Intel Core i7-3667U |
Y | Процессор с экстремально низким потреблением энергии. | Intel Core i7-7Y75
Intel Core m-5Y70 Intel Core i7-4610Y Intel Core i7-3689Y |
M | Процессор для мобильных устройств. | Intel Core i7-4600M
Intel Core i5-4300M Intel Core i7-3520M Intel Core i7-2677M |
MQ | Процессор с 4 ядрами для мобильных устройств. | Intel Core i7-4702MQ
Intel Core i7-4702MQ |
MX | Процессор серии Extreme edition для мобильных устройств. | Intel Core i7-4940MX Extreme Edition |
QM | Процессор с 4 ядрами для мобильных устройств. | Intel Core i7-3820QM
Intel Core i7-2860QM |
Обзор Socket 939
Socket 939 – это разъем для установки процессоров от компании AMD, который был представлен в 2004 году и пришел на замену Socket 754. Данный сокет был более доступной версией Socket 940, применявшегося в серверах и рабочих станциях. В дальнейшем Socket 939 был заменен на более современный Socket AM2.
Socket 939 получился достаточно удачным и обрел значительную популярность. Сокет поддерживал двухканальную оперативную память DDR (первого поколения) с полосой пропускания 6,4 Гб/с, шину HyperTransport шириной 16 бит и использовался для установки одно- и двухъядерных процессоров Sempron, Athlon 64, Athlon 64 X2, Athlon 64 FX и Opteron. Данные процессоры имели встроенный контроллер оперативной памяти, кэш L1 объемом 64 КБ, кэш L2 объемом 512 или 1024 КБ, а также поддержку инструкций 3DNow, SSE2 и SSE3. Для сокета 939 было выпущено немало чипсетов, основными из которых являлись SIS755, SIS760GX, nForce3, nForce4, ATI Xpress 200 и VIA K8T890.
Самым производительным процессором для Socket 939 являлся двухъядерный Opteron 190 (2.8 ГГц), но найти его в продаже было сложно. Из широкодоступных процессоров самыми производительными являлись двухъядерные Opteron 185 (2.6 ГГц) и Athlon 64 FX-60 (2.6 ГГц с возможностью разгона). Среди одноядерных моделей самым производительным процессором является Opteron 156 (3 ГГц).
Интерфейс Socket A (Socket 462)
- Подробности
- Родительская категория: Процессоры
- Категория: Развитие процессоров AMD
Athlon 650 — 1400 МГц (июнь 2000 — июнь 2001)Duron 600 — 950 МГц (июнь 2000 — июнь 2001)Duron 900 — 1300 МГц (май 2001 — январь 2002)Athlon XP 1500+ — 2100+ (октябрь 2001 — март 2002)Athlon XP 1700+ — 2100+ (апрель 2002 — июнь 2002)Athlon XP 1700+ — 2800+ (июнь 2002 — октябрь 2002)Athlon XP 2500+ — 3200+ (январь 2003 — май 2003)Sempron 2200+ — 3000+ (с июня 2004)
В рассматриваемый период ни один другой интерфейс процессора не продержался в производстве так долго, как Socket А. Появление этого интерфейса стало возможным благодаря переводу производства на технормы 180 нм, что, в свою очередь, позволило применить компактную упаковку ядра в керамическом корпусе.
Модель Athlon XP с ядром Palomino, помимо технологических новшеств, обеспечила поддержку расширенного набора инструкций SSE фирмы Intel. С переходом на технологические нормы 130 нм появилось ядро Thoroughbred, а с внедрением системной шины 333 МГц — ядро Thoroughbred В.
Генеалогия процессоров архитектуры AMD K7
В 2000 г. на рынке появились дешевые варианты Athlon, выполнен-ные в плоском пластиковом корпусе, под штырьково-контактный разъем Socket А. Новинка получила название Duron и была призвана стать альтернативой процессорам Celeron фирмы Intel. Хотя Duron имеет тот же объем кэш-памяти второго уровня, что и Celeron (128 Кбайт), его преимущество заключается в способности работать на системной шине 100 МГц (Celeron Socket 370 работал только на шине 66 МГц). Причем передача данных по шине памяти по обоим фронтам сигнала эмулирует результирующую частоту 200 МГц. Ядро Thunderbird обеспечило рабочие частоты процессора Athlon до 1400 МГц при тепловой мощности до 72 Вт.
Новый интерфейс дружно поддержали производители системных плат (VIA, SiS, АН, nVIDIA, ATI), представившие множество моделей чипсетов для Socket А. Одним из выдающихся представителей стал чипсет VIA КТ133, В связке С которым процессор Athlon достигал наилучшей производительности.
На рисунке: Процессор Athlon XP 2100 –>
С выходом семейства ХР компания AMD ввела новую маркировку процессоров по индексу производительности (Performance Rating). Например, первый процессор Athlon ХР имел индекс 1800+, но реальную рабочую частоту 1533 МГц. Официально индекс рассчитывался относительно процессоров Athlon с ядром Thunderbird, однако покупатели оценивали его как индекс соответствия частотам процессоров Pentium компании Intel. Надо признать, что в целом такой подход соответствовал действительности.
Архитектура К7 постепенно совершенствовалась в направлении улучшения технологий производства, повышения частоты системной шины, увеличения кэш-памяти. Самым производительным в линейке Athlon ХР стал процессор на ядре Barton с индексом 3200+. Он имел частоту системной шины 200 (400 DDR) МГц, реальную рабочую частоту 2200 МГц, обладал кэш-памятью второго уровня объемом 512 Кбайт.
С появлением 64-битных процессоров AMD архитектуры К8 перед компанией встал вопрос: что делать с линией процессоров Athlon ХР для Socket А. Их производительность практически не уступает соответствующим процессорам Pentium 4 и однозначно превосходит Celeron D. Но интерфейс Socket А уже не отвечает современным задачам.
На рисунке: Процессор AMD Sempron Socket A –>
После недолгих размышлений компания объявила следующее решение: процессоры Athlon ХР последних модификаций (на ядрах Thoroughbred-В, Thorton и Barton) переименовываются в Sempron, процессоры Duron снимаются с производства, разработка новых моделей процессоров для Socket А прекращается. Таким образом, пользователям предоставляется достаточно времени для постепенного сворачивания эксплуатации платформы Socket А и принятия решения о переходе на 64-битную платформу.
Процессоры архитектуры К8 превосходят Athlon XP (Sempron) в работе с 32-битными приложениями, но не настолько, чтобы немедленно бежать в магазин. Важную роль в принятие решения о смене платформы будут играть новые интерфейсы, которые не поддерживаются платформой Socket А. Производителям невыгодно разрабатывать чипсеты для устаревшей платформы Socket А с поддержкой современных технологий PCI Express, DDR2 SDRAM, Wi-Fi и прочих. Поэтому новых наборов системной логики для Socket А не появится.
- Вперёд >
Основы сокетов
При создании сокета, необходимо определить три параметра: стиль взаимодействия,
пространство имен, и пртокол. Стиль взаимодействия контролирует, как сокет
обрабатывает передаваемые данные, и определяет количество партнеров взаимодействия.
Через сокеты данные передаются блоками (пакетами). Стиль взаимодействия определяет,
как эти пакеты будут обработаны и как они передаются от отправителя к получателю.
- Стили соединения гарантируют доставку всех пакетов в том порядке, в каком они были
отправлены. Если во время передачи пакеты были потеряны или доставлены в
неправильном порядке, получатель автоматически отправляет запрос на их
повторную передачу. Стиль соединения напоминает телефонный звонок: адреса
отправителя и получателя фиксируются в начале соединения, при установке подключения. - Стили датаграм не гарантирует доставки и правильного порядка прибытия. Пакеты могут быть
потеряны или переупорядочены в пути из-за сетевых ошибок. Каждый пакет должен быть помечен
его адресатом, и нет гарантии, что он будет доставлен. Система гарантирует только
“максимальные усилия”, поэтому пакеты могут исчезнуть или прибыть в различном
порядке. Сокет стиля датаграмы ведет себя сходно с почтой. Отправитель определяет
адрес получателя для каждого индивидуального сообщения.
Пространство имен определяет, как записаны адреса сокета ( socket
addresses ). Адрес сокета идентифицирует один конец подключения сокета. Например,
адреса сокета в локальном пространстве имен являются обычными именами файлов. В
пространстве имен Интернет адрес сокета состоит из Интернет адреса (
IP адрес) главного компьютера, присоединенного к сети и номера порта, который
идентифицирует сокет среди множества сокетов на том же главном компьютере.
Протокол определяет, как передаются данные. Существуют следующие виды протоколов:
TCP/IP , первичные сетевые протоколы, используемые
Интернетом; сетевой протокол AppleTalk ; локальный
UNIX протокол взаимодействия. Не все комбинации стилей,
пространств имен и протоколов поддерживаются.
Системные вызовы
Виды системных вызовов:
- socket – создать сокет
- closes – уничтожить сокет
- connect – создать соединение между двумя сокетами
- bind – привязать сокет к порту сервера
- listen – настройка сокета для принятия подключений
- accept – принять запрос на соединение и создать сокет
для процесса взаимодействия
Сокеты представляются дескрипторами файлов.
Создание и уничтожение сокетов
С помощью функций socket и close
создаются и уничтожаются сокеты. При создании сокета, необходимо определить три параметра
сокета: пространство имен, стиль взаимодействия и протокол.
Для указания пространства имен
используются константы, начинающиеся с PF_ (сокращение “семейство
протокола”). Например, PF_LOCAL или PF_UNIX
определяют локальное пространство имен, и PF_INET
определяет Интернет пространство имен.
Второй параметр, стиль взаимодействия, представляет
собой константу, начинающиюся с SOCK_ .
SOCK_STREAM опеределяет стиль взаимодейтсвия соединение, SOCK_DGRAM
– стиль датаграмы.
Третий параметр, протокол, определяет механизм нижнего уровня для передачи и получения данных.
Для каждой комбинации пространство имен – стиль взаимоделйствия существует свой протокол.
Для каждой пары существует лучший протокол, поэтому можно указать 0, что соответсвует этому
протоколу. Если команда socket выполнена успешно, в качестве
результата возвращается дескриптор файла для сокета. С помощью команд
read и write , можно читать и записывать данные в сокет.
Вызов connect
Для создания соединение между двумя сокетами, клиент вызывает connect
, передавая адрес сокета сервера для подключения. Клиент – процесс, инициализирующий
соединение, а сервер – процесс, ожидающий разрешения соединения. Клиент посылает запрос
connect , чтобы инициализировать соединение между локальным
сокетом и сокетом сервера, переданным в качестве второго параметра. В качестве третьего
параметра передается длина, в байтах, адресной структуры, на которую указывает второй параметр.
Отправка данных
Любая техника записи в дескриптор файла, может использоваться при записи в сокет.
Функция send , определенная для дескрипторов файлов сокета,
аналогична функции write с несколькими дополнительными
параметрами.
Пример использования локальных сокетов
В листинге 5.10 представлена программа сервера, в которой создается локальный сокет
и слушает запросы на соединения с сервером. При получении запроса на соединение,
сервер читает текстовые сообщения, передаваемые через соединение и печатает их.
Если одно из этих сообщений – “выход”, программа сервера удаляет сокет и завершается.
Программа socket-server предполагает, что путь к сокету передается через параметр
командной строки.
Листинг 5.10 (socket-server.c)
#include #include #include #include #include #include /* Чтение текста из сокета и вывод его на печать. Продолжение цикла до закрытия сокета. * В качестве результата возвратит не ноль, если клиент передал сообщение "quit", иначе 0 */ int server (int client_socket) { while (1) { int length; char* text; /* Сначала из сокета прочитать длину текстого сообщения. Если в качестве результата возвратиться 0, то клиент закрыл соединение */ if (read (client_socket, &ength, sizeof (length)) == 0) return 0; /* выделить место в буфере для хранения текста */ text = (char*) malloc (length); /* Чтение текста и распечатка */ read (client_socket, text, length); printf ("%s\n", text); /* Освободить буфер */ free (text); /* Если от клиента поступило сообщение "quit", завершить работу */ if (!strcmp (text, "quit")) return 1; } } int main (int argc, char* const argv[]) { const char* const socket_name = argv; int socket_fd; struct sockaddr_un name; int client_sent_quit_message; /* Создать сокет */ socket_fd = socket (PF_LOCAL, SOCK_STREAM, 0); /* Определить что это сервер */ name.sun_family = AF_LOCAL; strcpy (name.sun_path, socket_name); bind (socket_fd, &name, SUN_LEN (&name)); /* Слушать (ожидать) соединения */ listen (socket_fd, 5); /* Неоднократно принимать соединения, создавая для каждого клиента server(). Продолжать до получения от клиента сообщения "quit" */ do { struct sockaddr_un client_name; socklen_t client_name_len; int client_socket_fd; /* Принимать соединение */ client_socket_fd = accept (socket_fd, &client_name, &client_name_len); client_sent_quit_message = server (client_socket_fd); /* Закрыть соединение с нашей стороны */ close (client_socket_fd); } while (!client_sent_quit_message); /* Удалить файл сокета */ close (socket_fd); unlink (socket_name); return 0; }
Клиент-программа, представленная в листинге 5.11, соединяется с локальным сокетом
и посылает сообщения. Путь к сокету и сообщения передаtтся через командную строку.
Листинг 5.11(socket-client.c)
#include #include #include #include #include /* Записать TEXT в сокет, переданный дескриптором файла SOCKET_FD */ void write_text (int socket_fd, const char* text) { /* Записать в строку количество байт, включая NUL-терминал */ int length = strlen (text) + 1; write (socket_fd, &length, sizeof (length)); /* Записать строку */ write (socket_fd, text, length); } int main (int argc, char* const argv[]) { const char* const socket_name = argv; const char* const message = argv; int socket_fd; struct sockaddr_un name; /* Создать сокет */ socket_fd = socket (PF_LOCAL, SOCK_STREAM, 0); /* Сохранить имя сервера в адресе сокета */ name.sun_family = AF_LOCAL; strcpy (name.sun_path, socket_name); /* Соединиться с сокетом */ connect (socket_fd, &name, SUN_LEN (&name)); /* Записать текст командной строки в сокет */ write_text (socket_fd, message); close (socket_fd); return 0; }
Перед передачей сообщения, посылается размер сообщения в байтах в качестве переменной length.
Сервер сохраняет размер сообщения, для выделения памяти под сообщение. Чтобы выполнить этот
пример, необходимо запустить сервер-программу в одном окне, определить путь к сокету.
Например, /tmp/socket .
% ./socket-server /tmp/socket
В другом окне запустить клиент-программу несколько раз, опеределяя один и тот же путь
сокета и посылая клиенту сообщение:
% ./socket-client /tmp/socket "Hello, world." % ./socket-client /tmp/socket "This is a test."
Сервер-программа получает и печатает эти сообщения. Для закрытия соединения,
клиент посылает сообщение “quit”:
% ./socket-client /tmp/socket "quit"
Сервер-программа завершена.
Обзор сокета LGA 1150
Socket LGA 1150 также известен как Socket H3 – это процессорный разъем разработанный для установки процессоров Intel с архитектурой Haswell и Broadwell.
Haswell – это архитектура, которая была представлена в 2013 году и является следующим шагом после архитектуры Ivy Bridge. Согласно стратегии «Тик-так», архитектура Haswell была построена на базе техпроцесса 22 нанометров. Данная архитектура принесла изменения в устройство кэш памяти процессора, поддержку инструкций AVX2, а также улучшенную энергоэффективность. Haswell – это четвертое поколение в линейке процессоров Core, соответственно индекс процессоров Core с данной архитектурой начинается с цифры 4. Например, Core i3-4130.
Broadwell – следующая архитектура после Haswell. Согласно стратегии «Тик-так», архитектура Broadwell была построена на новом техпроцессе 14 нанометров. Broadwell – это пятое поколение в линейке процессоров Core, соответственно индекс процессоров Core с данной архитектурой начинается с цифры 5. Например, Core i7-5775C.
Ниже приводится таблица со списком всех процессоров, которые подходят для Сокета 1150. Вы можете использовать эту информацию для подбора процессора, однако вы должны знать, что совпадение сокета на материнской плате и процессоре еще не гарантирует их совместимость. Если вы планируете покупку процессора, то вам нужно дополнительно уточнить на сайте производителя материнской платы, поддерживается ли данный конкретный процессор вашей материнской платой. Иначе есть риск купить процессор, а потом обнаружить, что он отказывается работать на имеющейся плате.