Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> пакет для переделки функций дельфи на Си, кросплатформенный компилятор, библиотеки 
:(
    Опции темы
Archon7th
Дата 9.6.2009, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 22.4.2005
Где: Витебск Белорусия

Репутация: нет
Всего: нет



есть консольная программа с исходником на Дельфи под виндовские сокеты
нужно переложить её на Си под фряху, причем я работаю в Винде, и понятия о конфиге сервера даже не имею куда это будет ставится

программа использует виндовкие сокеты и библиотеку запросов в базу МуСкуль
причем сокеты в режиме нонблок с удержанием соединения и с возможностью паралельных запросов ... и связывается всё это с килентом через интерфейс написанный на дельфи

и так вопросы:
какой компилятор мне лучше использовать что бы я мог писать на Си под виндой, но в момент когда нужно будет монтироваться на Фряху что бы у меня не возникло никаких проблем с сокетами и запросами в мускуль
нужна кросплатформенная библиотека сокетов
нужна кросплатформенная библиотека мускуля, причем желательно на той же библиотеке что и вышеупомянутые сокеты



З.Ы.: лет 8 не писал на Си ))))

Добавлено через 4 минуты и 42 секунды
а, еще забыл вопрос
имеет ли смысл делать всё на C# ? ... коего вообще не знаю, но время позволяет начать обучение
и вообще чем С# отличается от С++ ?
--------------------
CPU not found. Running software emulation.
PM MAIL ICQ   Вверх
math64
Дата 9.6.2009, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



C# использовать не имеет смысла - пока нет нормальной реализации под Linux.
Но имеет смысл использовать Java.
программирование на C/C++:
mysql: используй коннектор от mysql, который можно скачать оттуда же с mysql.com, интерфейс у них общий для Windows и Linux.
sockets:
Код

#ifdef __WIN32__
#ifdef __GCC__
#include <unistd.h>
#else
#include <io.h>
#endif
#include <windows.h>
#include <winsock.h>
typedef u_long sock_u_long;
#else
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/ioctl.h>
#include <sys/select.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#define ioctlsocket ioctl
#define closesocket close
typedef int sock_u_long;
#endif

int main() {
#ifdef __WIN32__
WORD wVersionRequested = MAKEWORD( 1, 1 ); // 2, 0
WSADATA wsaData;

int status = WSAStartup( wVersionRequested, &wsaData );
if ( status != 0 )
  {
  /* Tell the user that we couldn't find a usable WinSock DLL. */
  printf ("WSAStartup failed\n");
  return 1;
  }
#endif
...
}

PM   Вверх
azesmcar
Дата 9.6.2009, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Archon7th

http://www.cygwin.com/
пишите спокойно на GCC.
PM   Вверх
Archon7th
Дата 21.6.2009, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 22.4.2005
Где: Витебск Белорусия

Репутация: нет
Всего: нет



вот спокойно писать не получается ((((
уже всю последнюю неделю пытаюсь писать на gcc
очень страдаю от того что ряд примероюв расчитан на tcc и vcpp или ище каке-то вариации бибилиотек для gcc

голова кипит, ничего не работает (
не говоря уже о кросплатформенной совместимости



З.Ы.: какова совместимость кодов java линуха и винды?
может тогда лучше java ?
подскажите тогда что мне нужно для явы?
--------------------
CPU not found. Running software emulation.
PM MAIL ICQ   Вверх
azesmcar
Дата 21.6.2009, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(Archon7th @  21.6.2009,  22:02 Найти цитируемый пост)
очень страдаю от того что ряд примероюв расчитан на tcc и vcpp или ище каке-то вариации бибилиотек для gcc

Это проблема gcc?

Цитата(Archon7th @  21.6.2009,  22:02 Найти цитируемый пост)
голова кипит, ничего не работает (
не говоря уже о кросплатформенной совместимости

А зачем вам кроссплатформенная совместимость? Вы же написали что вам нужно в итоге иметь программу под фряхой. Ну вот и пишите в эмуляторе.

Цитата(Archon7th @  21.6.2009,  22:02 Найти цитируемый пост)
З.Ы.: какова совместимость кодов java линуха и винды?

Кодов? Java -ой пишут кросплатформенные приложения. Т.е. само приложение кроссплатформенное, что уж там говорить про коды.

Цитата(Archon7th @  21.6.2009,  22:02 Найти цитируемый пост)
может тогда лучше java ?

 smile

Цитата(Archon7th @  21.6.2009,  22:02 Найти цитируемый пост)
подскажите тогда что мне нужно для явы? 

знания явы как ни странно smile 


Это сообщение отредактировал(а) azesmcar - 21.6.2009, 22:20
PM   Вверх
Archon7th
Дата 22.6.2009, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 22.4.2005
Где: Витебск Белорусия

Репутация: нет
Всего: нет



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


кросплатформенная нужна для того что часть сереверов остается под Виндами, а все новые будут монтироваться на Фряху
вот с этим то и проблема + я сижу под виндой
--------------------
CPU not found. Running software emulation.
PM MAIL ICQ   Вверх
azesmcar
Дата 22.6.2009, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(Archon7th @  22.6.2009,  09:00 Найти цитируемый пост)
кросплатформенная нужна для того что часть сереверов остается под Виндами, а все новые будут монтироваться на Фряху
вот с этим то и проблема + я сижу под виндой 

То что вы сидите под виндой как я уже сказал не проблема. Есть эмуляторы.

Цитата(azesmcar @  9.6.2009,  09:55 Найти цитируемый пост)
http://www.cygwin.com/

Если вам нужна кроссплатформенность - то сперва решите поконкретнее и ответьте на этот вопрос.
Нужна кроссплатформенность кода или нужна кроссплатформенность приложения?
Для кроссплатформенности приложения - Java (или на web с помощью любого кроссплатформенного интерпретатора (php, python, tcl, perl)...)
Для кроссплатформенности кода - QT, wxWidgets...
Я не знаю специфику вашего приложения, сложно что-то посоветовать, но по любому писать на языке которого не знаете - не есть лучшее решение.
PM   Вверх
Archon7th
Дата 22.6.2009, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 22.4.2005
Где: Витебск Белорусия

Репутация: нет
Всего: нет



нужно принимать пакет с сокета (причем речь идет о онлайне 500 ломящемуся в один порт)
делать запрос в базу (мускуль) и давать ответ клиенту 
+ нужно держать в памяти большой кеш, что бы не загружать сильно базу


выход на дельфи был зделан путем многопоточности и асинхноррного неблакируемого порта

так вот теперь нужно всё этопродублировать на яве или на любом другом кросплатформенном языке
... а  в будущем и перевести на единый код все сервера

вот (
--------------------
CPU not found. Running software emulation.
PM MAIL ICQ   Вверх
pan2004
Дата 23.6.2009, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 2
Всего: 9



Archon7th, для кроссплатформ. асинхронного IO(сокеты) можно использовать либу boost::asio(или просто asio, тогда не будет зависимостей от других буст библиотек). С данной либой можно довольно легко сделать распараллеливание по нескольким потокам, или оставить все в одном. Ввод/вывод поддерживается как синхронный, так и асинхронный. Насколько библиотека хороша в условиях загруженности, не знаю, так как под такими условиями ей не пользовался. Из недостатков можно отметить недостаточную документацию(описание многих функций API состоит всего из нескольких слов, хотя может для человека уже знакомого с сокетами все будет ясно), хотя к ней есть примеры и небольшой туториал.


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
Andrew121
Дата 23.6.2009, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 21.6.2009

Репутация: 1
Всего: 1



Цитата(pan2004 @  23.6.2009,  15:58 Найти цитируемый пост)
можно использовать либу boost::asio(или просто asio, тогда не будет зависимостей от других буст библиотек).

А то что asio зависит от буст, это ничего? smile 


Цитата(pan2004 @  23.6.2009,  15:58 Найти цитируемый пост)
Насколько библиотека хороша в условиях загруженности, не знаю

Хороша, очень хороша!


Цитата(Archon7th @  22.6.2009,  19:26 Найти цитируемый пост)
нужно принимать пакет с сокета (причем речь идет о онлайне 500 ломящемуся в один порт)

Это ничего! smile 


Цитата(Archon7th @  22.6.2009,  19:26 Найти цитируемый пост)
нужно держать в памяти большой кеш, что бы не загружать сильно базу

 smile 500 клиентов, это много? smile В моем сервере расчет на 10 000 клиентов, пока наблюдал пик в 3812, и ничего, диск отдыхает.
Жду максимума. Любопытно...
PM MAIL   Вверх
pan2004
Дата 23.6.2009, 17:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 2
Всего: 9



Цитата(Andrew121 @  23.6.2009,  16:49 Найти цитируемый пост)
А то что asio зависит от буст, это ничего? 

я имею в виду версию asio, которая распространяется отдельно от boost(см asio homepage). Она не требует отдельно буст библиотек, в отличие от boost::asio, которая требует сборки как минимум boost::system
Цитата

Dependencies 

The following libraries must be available in order to link programs that use Asio: 
Boost.Regex (optional) if you use any of the read_until() or async_read_until() overloads that take a boost::regex parameter. 
OpenSSL (optional) if you use Asio's SSL support. 

Furthermore, some of the examples also require Boost.Date_Time or Boost.Serialization libraries.



Это сообщение отредактировал(а) pan2004 - 23.6.2009, 17:40


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
Andrew121
Дата 23.6.2009, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 21.6.2009

Репутация: 1
Всего: 1



pan2004, Гы... Не знаю, не пробовал...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0998 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.