1 Востаннє редагувалося cheappi386 (03.08.2018 20:55:28)

Тема: TCP Linux <-> Windows

Наскільки відрізняється реалізація ? Читав що коли пишиться сервер під берклі сокети на лінуксі а клієнт типа на тиж самі сокети, але під віндовс то можуть виникати значні проблеми.

2

Re: TCP Linux <-> Windows

У вас на комп'ютері що, Windows?
Як ви гадаєте, цей сайт на Linux?
Ну і як, коли ви зі свого клієнта під Windows заходите на сервер на Linux, проблеми виникають?

Подякували: leofun011

3

Re: TCP Linux <-> Windows

Читав що коли пишиться сервер під берклі сокети на лінуксі а клієнт типа на тиж самі сокети, але під віндовс то можуть виникати значні проблеми.

Не знаю, я про таке перший раз чую.

Сама реалізація відрізняється, ясна річ (трохи інші типи данних, значення, які вертає функція, наприклад на вінді це SOCKET і 0 в випадку помилки, на лінуксі це int і -1, і т.д.). Але - для прикладного программіста це не має ніякого значення. Грубо кажучи, якщо сервер грамотно спроектований, тобто якшо писала людина, яка хоч трохи читала доки, то нема різниці, який буде клієнт (вінсок, скріпти, ще щось). У вінсок2 просто добавили ряд функцій для асинхронного програмування, і ще дещо, але повторюсь - для прикладного программіста це все не має значення.

Подякували: leofun011

4

Re: TCP Linux <-> Windows

Я колись мав проблеми лише з цим https://uk.m.wikipedia.org/wiki/Порядок_байтів 
Але воно виникало не через лінух чи віндус , а через різні мови програмування для клієнтської та серверної частини

5

Re: TCP Linux <-> Windows

Хіба TCP не зроблений для того щоб якраз підвести під одну риску можливі шляхи підключення? Типу інтерфейсів?

6

Re: TCP Linux <-> Windows

Q-bart написав:

Хіба TCP не зроблений для того щоб якраз підвести під одну риску можливі шляхи підключення? Типу інтерфейсів?

Є певні особливості реалізації. Але якщо користуватися саме чистим TCP за стандартом, проблем не має виникати.

7

Re: TCP Linux <-> Windows

koala написав:
Q-bart написав:

Хіба TCP не зроблений для того щоб якраз підвести під одну риску можливі шляхи підключення? Типу інтерфейсів?

Є певні особливості реалізації. Але якщо користуватися саме чистим TCP за стандартом, проблем не має виникати.

Я б навіть сказав: якщо реалізація задовільняє стандарт, то проблем не може бути.

8

Re: TCP Linux <-> Windows

Коли зв'язок GSM, яуий інколи падає навіть до GPRS, а cокети асинхронні й використовуються усілякі setsockopt.Й навіть тоді реалізація ні нащо не впливає ?

9

Re: TCP Linux <-> Windows

GPRS працює поверх GSM. Мабуть ви мали на увазі падіння 3G до GPRS. Асинхронні сокети і всякі надбудови можуть впливати на час передачі даних, на послідовність передачі, на те, що побачить користувач (в кінцевому результаті), але вони не порушують самих протоколів передачі даних.

10

Re: TCP Linux <-> Windows

cheappi386 написав:

Коли зв'язок GSM, яуий інколи падає навіть до GPRS, а cокети асинхронні й використовуються усілякі setsockopt.Й навіть тоді реалізація ні нащо не впливає ?

Треба грамотно писати, читати документацію, а не "лиш би робило"! Скажімо, якщо йде виклик recv, то на дуже повільних інтернетах він не завжди поверне всю відповідь зараз. Може хоть по 10 байт повертати. Треба добавити його в цикл, брати довжину відповіді  (з content-length в випадку хттп), і читати поки не прочитаєте все. А як деякі роблять - викликав той recv один раз, на його швидких інетах все зчиталось , віддав код в продакшн, і все.

а cокети асинхронні й використовуються усілякі setsockopt

Якщо писав нормальний программіст по стандартам - не впливає. А як може впливати взагалі? Чи ви думаєте, що ваші високорівневі бібліотеки не базуються на сокетах?? Уже відповідали вище, шо більшість домашніх компів на вінді, а серверів на ніксах.

Подякували: koala, leofun01, Torbins3

11

Re: TCP Linux <-> Windows

в лінуксі десь з версії ядра 2.6 не BSD сокети, а власний стек
але проблеми швидше за все є, бо є скажімо такі новини   Facebook ищет разработчиков для доведения сетевого стека Linux до уровня FreeBSD

12

Re: TCP Linux <-> Windows

reverse2500 написав:

в лінуксі десь з версії ядра 2.6 не BSD сокети, а власний стек
але проблеми швидше за все є, бо є скажімо такі новини   Facebook ищет разработчиков для доведения сетевого стека Linux до уровня FreeBSD

Звісно є але я не впененний з чим зтикнувся. Є кілька промислових GSM модемів/роутерів(лінукс сервер) в яких прошивка на лінусі, все працює чудово. Поки звязок не падає до 1 генерації.Й тоді зі сторони  віндового клієнта через декілька хвилин стає усе пагано а WSAGetLastError починає викидати для send 10054, а recv 10060.Й хоч перевидкривай сокет, нічого не допомогає зі сторони клієнта, якщо не налаштувати на самому модемі перезавантажування.

13

Re: TCP Linux <-> Windows

WSAECONNRESET
10054
Підключення скинуто іншим комп'ютером.
Існуюче з'єднання було примусово закрито віддаленим хостом. Це звичайно відбувається, якщо однорангове додаток на віддаленому хості раптово зупиняється, хост перезавантажується, хост або віддалений мережевий інтерфейс вимикається, або віддалений хост використовує жорсткий засіб (див. [ Setsockopt ] (/ windows / desktop / api / winsock / nf-winsock-setsockopt) для отримання додаткової інформації про параметр SO_LINGER на віддаленому сокеті). Ця помилка може також виникати, якщо підключення було зламано через активність, що тримається, виявлення помилки під час виконання однієї або декількох операцій. Операції, які виконувалися, не працюють з WSAENETRESET. Подальші операції збігаються з WSAECONNRESET.

може сесія не закрита а іншого не створюється

Подякували: leofun011

14

Re: TCP Linux <-> Windows

з UDP подібного теоретично не може бути ?

15

Re: TCP Linux <-> Windows

для отримання додаткової інформації про параметр SO_LINGER на віддаленому сокеті

Ця помилка може також виникати, якщо підключення було зламано через активність, що тримається, виявлення помилки під час виконання однієї або декількох операцій.

думаю ні, але це я думаю
може одночасно декілька операцій іти