Сетевое программирование на C?

#c #unix #posix #bsd

#c #unix #posix #bsd

Вопрос:

Какие библиотеки являются лучшими (с точки зрения производительности) для сетевого программирования на C в Windows и UNIX?

Я очень заинтересован в отношении высокочастотной торговли.

Я слышал о BSD и POSIX, но я не был уверен, существуют ли более быстрые библиотеки, зависящие от производительности?

Комментарии:

1. Каковы ваши требования? Продемонстрировали ли вы, что сетевые средства, предоставляемые операционной системой, не соответствуют этим требованиям?

2. Сеть, предоставляемая операционной системой, вполне способна обеспечить подключение gigabit Ethernet. Насколько быстро ваше подключение к Интернету?

3. Что вы подразумеваете под сетевыми средствами, предоставляемыми ОС? Я хочу написать несколько демонстрационных программ сервер-клиент на C, и, насколько я понимаю, исходный стандарт C не содержит сетевых библиотек, Поэтому мне пришлось бы использовать что-то другое (например, bsd, POSIX и т. Д.), По крайней мере, В случае Windows? Я не уверен в UNIX

4. Стандарт C не предоставляет сетевых библиотек — это правда. Но если вы работаете на Unix-подобной платформе, «стандартные» (например, «предоставляемые ОС») библиотеки будут включать сокеты BSD, и они будут хорошо работать для вас. В Windows, вероятно, есть совершенно другой интерфейс (WinSock?). Или вы можете использовать Cygwin или Mingw для предоставления сокетов BSD. Все они, вероятно, тоже будут работать достаточно хорошо.

5. @Jonathan WinSock является производным от BSD, поэтому они похожи.

Ответ №1:

Самым быстрым способом было бы использовать сетевые функции ОС: socket() , setsockopt() , connect() , listen() , send() , recv() и т.д. и т.п.

Между ними есть тонкие различия в нескольких ОС.

Чтобы справиться с этим, в нескольких библиотеках есть обертки вокруг них, например, в Qt (по крайней мере, IIRC). Я не думаю, что что-то заметно замедлится, если вы будете их использовать…

Комментарии:

1. Привет, мне просто нужно включить windows.h, чтобы получить к ним доступ?

2. Я полагаю, что да, но я не уверен. Не программируйте много под Windows.

3. Отличный ресурс по этому типу низкоуровневого сетевого программирования beej.us/guide/bgnet . Контент в основном ориентирован на unix, но содержит некоторые комментарии по использованию в Windows.

Ответ №2:

Как насчет ZeroMQ. [http://www.zeromq.org /][1]

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

Комментарии:

1. Вы должны упомянуть некоторые из нескольких доступных опций, а не обязательно одну.