LINUX.ORG.RU

Как устроено сетевое программирование в других языках?

 ,


0

1

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

В каноничномъ си для сетевого программирования используют интерфейс сокетов. Там можно написать сетевую часть как хочешь, даже так, что не будет работать.

А в каком-нибудь овальном ЯП в пустоте, назовем его swift, все очень огорожено и есть, к примеру, ровно 2 метода: послать-принять. Имплементацию этих методов не изменить и напрямую сетевую подсистему ядра ОС не дернуть, придется работать через эти методы.

А что, если там оверхед какой-нибудь и они будут медленнее работать, чем надо? Переписывать сетевую часть на сях или curl?
Было ли у вас когда-нибудь такое, что сеть и логика писались на разных языках?

Перемещено mono из talks

★★★★

Последнее исправление: unt1tled (всего исправлений: 1)

вот помню, было такое поделие, «dark basic», и там сеть была через DirectPlay, и посылались данные как-то так

send net message string "blablabla"

А что, если там оверхед какой-нибудь и они будут медленнее работать, чем надо? Переписывать сетевую часть на сях или curl?

Было ли у вас когда-нибудь такое, что сеть и логика писались на разных языках?

А нафиг тогда такой язык, если производительность критична, проще сразу всё на С или С++ писать

Harald ★★★★★
()
Ответ на: комментарий от Harald

ну вот для апплодевайсов можно только на objective C или swift

да и сетевая производительность критична всегда, так-то

unt1tled ★★★★
() автор топика
Последнее исправление: unt1tled (всего исправлений: 1)

Иногда тебе пофиг, как реализованы эти методы потому, что всё упрётся в IO.

x3al ★★★★★
()
Ответ на: комментарий от unt1tled

objective C

он никак не запрещает тебе с сокетами возиться, это вообще химера из нормального С и их норкоманских квадратных скобочек и упоротого ООП )

Harald ★★★★★
()
Ответ на: комментарий от Harald

ну хорошо, ява или питон... ковыряешь базы данных на них и прикреплять другой язык только ради сети никто не станет

хотя да, тут уже сказали, что упрется в ИО, особенно в этом случае

unt1tled ★★★★
() автор топика
Ответ на: комментарий от unt1tled

в яве есть теже сокеты и nio и там можно очень быстро (ну да на сях наверняка быстрее на спичку)

Deleted
()
Ответ на: комментарий от unt1tled

ну вот для апплодевайсов можно только на objective C или swift

Еще можно objective-C++, по крайне мере раньше можно было, а так же можно спокойно размешивать проект файлами на чистом C или C++. Правда есть своим особенности использования C++ рантайма из objective C.

qrck ★★
()

P.S. А по теме - в проекте над которым я работаю, большая часть кода - на C#/C++, но критичный к скорости сетевой код - на VHDL :)

qrck ★★
()

На питоне в распоряжении программиста примерно те же сокеты, оверхед связан лишь с динамическим диспатчем всего и вся в питоне.

написать сетевую часть как хочешь, даже так, что не будет работать.

Особого труда в нём не составляет.

PolarFox ★★★★★
()

А что, если там оверхед какой-нибудь и они будут медленнее работать, чем надо? Переписывать сетевую часть на сях или curl?

По сравнению с временем ответа сети и нагрузкой из-за самой работы с сетью оверхед на вспомогательные классы — сущая ерунда.

quiet_readonly ★★★★
()
Ответ на: комментарий от PolarFox

На питоне в распоряжении программиста

ctypes.

Deleted
()
Ответ на: комментарий от quiet_readonly

оверхед на вспомогательные классы — сущая ерунда

даже в каком-нибудь лишпике или хацкеле?

unt1tled ★★★★
() автор топика

в других языках все ровно так же или лучше, переписывать ничего не нужно

umren ★★★★★
()

gen_tcp/gen_udp/gen_server

anonymous
()
Ответ на: комментарий от unt1tled

Он о там, что в каноничном ц сети нет.

А от себя добавлю, что ты не прекращаешь быть смешным начиная с 1913 года.

anonymous
()
Ответ на: комментарий от anonymous

с 1913 года.

ы?

Он о там, что в каноничном ц сети нет.

чейта нет? бзд сокеты, как и вся бздя (написанная на каноничномъ си) появились достаточно давно

unt1tled ★★★★
() автор топика
Последнее исправление: unt1tled (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.