Тема: TCP Linux <-> Windows
Наскільки відрізняється реалізація ? Читав що коли пишиться сервер під берклі сокети на лінуксі а клієнт типа на тиж самі сокети, але під віндовс то можуть виникати значні проблеми.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Системне програмування → TCP Linux <-> Windows
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Наскільки відрізняється реалізація ? Читав що коли пишиться сервер під берклі сокети на лінуксі а клієнт типа на тиж самі сокети, але під віндовс то можуть виникати значні проблеми.
У вас на комп'ютері що, Windows?
Як ви гадаєте, цей сайт на Linux?
Ну і як, коли ви зі свого клієнта під Windows заходите на сервер на Linux, проблеми виникають?
Читав що коли пишиться сервер під берклі сокети на лінуксі а клієнт типа на тиж самі сокети, але під віндовс то можуть виникати значні проблеми.
Не знаю, я про таке перший раз чую.
Сама реалізація відрізняється, ясна річ (трохи інші типи данних, значення, які вертає функція, наприклад на вінді це SOCKET і 0 в випадку помилки, на лінуксі це int і -1, і т.д.). Але - для прикладного программіста це не має ніякого значення. Грубо кажучи, якщо сервер грамотно спроектований, тобто якшо писала людина, яка хоч трохи читала доки, то нема різниці, який буде клієнт (вінсок, скріпти, ще щось). У вінсок2 просто добавили ряд функцій для асинхронного програмування, і ще дещо, але повторюсь - для прикладного программіста це все не має значення.
Я колись мав проблеми лише з цим https://uk.m.wikipedia.org/wiki/Порядок_байтів
Але воно виникало не через лінух чи віндус , а через різні мови програмування для клієнтської та серверної частини
Хіба TCP не зроблений для того щоб якраз підвести під одну риску можливі шляхи підключення? Типу інтерфейсів?
Хіба TCP не зроблений для того щоб якраз підвести під одну риску можливі шляхи підключення? Типу інтерфейсів?
Є певні особливості реалізації. Але якщо користуватися саме чистим TCP за стандартом, проблем не має виникати.
Q-bart написав:Хіба TCP не зроблений для того щоб якраз підвести під одну риску можливі шляхи підключення? Типу інтерфейсів?
Є певні особливості реалізації. Але якщо користуватися саме чистим TCP за стандартом, проблем не має виникати.
Я б навіть сказав: якщо реалізація задовільняє стандарт, то проблем не може бути.
Коли зв'язок GSM, яуий інколи падає навіть до GPRS, а cокети асинхронні й використовуються усілякі setsockopt.Й навіть тоді реалізація ні нащо не впливає ?
GPRS працює поверх GSM. Мабуть ви мали на увазі падіння 3G до GPRS. Асинхронні сокети і всякі надбудови можуть впливати на час передачі даних, на послідовність передачі, на те, що побачить користувач (в кінцевому результаті), але вони не порушують самих протоколів передачі даних.
Коли зв'язок GSM, яуий інколи падає навіть до GPRS, а cокети асинхронні й використовуються усілякі setsockopt.Й навіть тоді реалізація ні нащо не впливає ?
Треба грамотно писати, читати документацію, а не "лиш би робило"! Скажімо, якщо йде виклик recv, то на дуже повільних інтернетах він не завжди поверне всю відповідь зараз. Може хоть по 10 байт повертати. Треба добавити його в цикл, брати довжину відповіді (з content-length в випадку хттп), і читати поки не прочитаєте все. А як деякі роблять - викликав той recv один раз, на його швидких інетах все зчиталось , віддав код в продакшн, і все.
а cокети асинхронні й використовуються усілякі setsockopt
Якщо писав нормальний программіст по стандартам - не впливає. А як може впливати взагалі? Чи ви думаєте, що ваші високорівневі бібліотеки не базуються на сокетах?? Уже відповідали вище, шо більшість домашніх компів на вінді, а серверів на ніксах.
в лінуксі десь з версії ядра 2.6 не BSD сокети, а власний стек
але проблеми швидше за все є, бо є скажімо такі новини Facebook ищет разработчиков для доведения сетевого стека Linux до уровня FreeBSD
в лінуксі десь з версії ядра 2.6 не BSD сокети, а власний стек
але проблеми швидше за все є, бо є скажімо такі новини Facebook ищет разработчиков для доведения сетевого стека Linux до уровня FreeBSD
Звісно є але я не впененний з чим зтикнувся. Є кілька промислових GSM модемів/роутерів(лінукс сервер) в яких прошивка на лінусі, все працює чудово. Поки звязок не падає до 1 генерації.Й тоді зі сторони віндового клієнта через декілька хвилин стає усе пагано а WSAGetLastError починає викидати для send 10054, а recv 10060.Й хоч перевидкривай сокет, нічого не допомогає зі сторони клієнта, якщо не налаштувати на самому модемі перезавантажування.
WSAECONNRESET
10054
Підключення скинуто іншим комп'ютером.
Існуюче з'єднання було примусово закрито віддаленим хостом. Це звичайно відбувається, якщо однорангове додаток на віддаленому хості раптово зупиняється, хост перезавантажується, хост або віддалений мережевий інтерфейс вимикається, або віддалений хост використовує жорсткий засіб (див. [ Setsockopt ] (/ windows / desktop / api / winsock / nf-winsock-setsockopt) для отримання додаткової інформації про параметр SO_LINGER на віддаленому сокеті). Ця помилка може також виникати, якщо підключення було зламано через активність, що тримається, виявлення помилки під час виконання однієї або декількох операцій. Операції, які виконувалися, не працюють з WSAENETRESET. Подальші операції збігаються з WSAECONNRESET.
може сесія не закрита а іншого не створюється
для отримання додаткової інформації про параметр SO_LINGER на віддаленому сокеті
Ця помилка може також виникати, якщо підключення було зламано через активність, що тримається, виявлення помилки під час виконання однієї або декількох операцій.
думаю ні, але це я думаю
може одночасно декілька операцій іти
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися