информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] ещё не в тему 13.07.01 03:18  Число просмотров: 795
Автор: Бяша <Biasha> Статус: Member
<"чистая" ссылка>
> > только <рrе>,</рrе> ставь (мне когда-то XR
> > кажется подсказал), а то очень смешной исходник
> выходит.
> > (кстати, сейчас можно редактировать сообщения)
> я мало шарю в скриптах :))) и потом это было бы нагло, если
> бы все было идеально ))) да и смысла нет
Я тоже :), это, кажется, не скрипты, это, если я не путаю, тег html называется.
Короче перед исходником ставишь первый, после - второй.

> знаю такую - Visual Studio - Alt + F8 :))) и прогу писать
> не надо.
Спасибо - не знал, удобно.

> хотя хорошая идея написать свою, чтобы отредактировал так
> как тебе удобно, а то тут он только TAB вставляет.
И чтоб переменные называла, как я привык :)

Так вот ещё не в тему:
у тебя написано в main: "else if (!CreateSocket()|!Connect())"
C++ гарантирует, что CreateSocket вызовется первым? Паскаль, если я не ошибаюсь, в таких случаях вызывал как хотел.
<programming>
[C++] Опять про сокеты 09.07.01 13:49  
Автор: myrmidon Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Как всётаки сделать таймаут на коннект?? с помощью select'а, только без SetTimer
и ещо, я сделал сокет не блокируемым - DWORD dw = TRUE;
ioctlsocket(socket, FIONBIO, &dw);

и теперь у меня всё пролетает не блокируясь и я не успеваю отправить и сразу принять данные
[C++] Опять про сокеты 10.07.01 14:06  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Как всётаки сделать таймаут на коннект?? с помощью
> select'а, только без SetTimer
> и ещо, я сделал сокет не блокируемым - DWORD dw = TRUE;
> ioctlsocket(socket, FIONBIO, &dw);
>
> и теперь у меня всё пролетает не блокируясь и я не успеваю
> отправить и сразу принять данные

делашь так :

SOCKET s = socket(....);
bind(...);
DWORD dw = TRUE;
> ioctlsocket(s, FIONBIO, &dw);
connect(s, sockaddr, len);

select(0, NULL, &writefds, &timeout);
^^^^^^^
// witefds вернет тебе значение по которой ты узнаешь можно писать в сокет или нет
// timeout - переменная типа TIMEVAL, где собственно и укажешь тайиаут
// затем, если у тебя геморой с этим, то переведешь сокет в блокирующее состояние
dw = FALSE;
> ioctlsocket(s, FIONBIO, &dw);


вот и весь фокус. лучше всего select() использовать в отдельном потоке, придумай свой механизм обмена сообщениями между потоками и используй его. намного интерестно будет.
[C++] [C++] Опять про сокеты 10.07.01 21:07  
Автор: myrmidon Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Млин, дело в том, что я делаю клиент прогу, и зачем юзать bind???
и ещо, я просто коннектюсь к серверу но определённый порт, ну например на 80, а веб сервера там нету, и в итоге connect ждет очень долго, и потом говарит что нелзя подконнектица, а ждать долго я не могу, ещо было бы круче самому регулировать что если коннект не соединился скажем после секунд 2 сразу сказать что нелзя соединица, а то ооооочень долго жду
[C++] [C++] Опять про сокеты 11.07.01 02:15  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Млин, дело в том, что я делаю клиент прогу, и зачем юзать
> bind???
> и ещо, я просто коннектюсь к серверу но определённый порт,
> ну например на 80, а веб сервера там нету, и в итоге
> connect ждет очень долго, и потом говарит что нелзя
> подконнектица, а ждать долго я не могу, ещо было бы круче
> самому регулировать что если коннект не соединился скажем
> после секунд 2 сразу сказать что нелзя соединица, а то
> ооооочень долго жду

bind() - если твоя карточка имеет несколько интерфейсов, т.е. несколько ИП адресов, то чтобы "привязать" сокет к конкретному ИП тебе нужен bind.
а насчет таймаута, я что то не въеду, неужели ты хочешь сказать, что через select() у тебя ничего не получилось? не верю, я такое делал, правда вместо Berkley's select() я использовал WSAEventSelect().
используя connect() ты действительно будешь ждать до тех пор пока не придет ответ, а через select() (используя переменную timeout), ты получишь ответ - таймаут, по истечению времени.
[C++] [C++] Опять про сокеты 11.07.01 03:33  
Автор: myrmidon Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Млин, да какой в %опу моя карточка имеет несколько ипи интресфейсов??
Интерфейс один - ppp
Обесни плиз, хотябы используя WSAEventSelect()
как сделать таймаут на коннект!, заметь не на приём или передачу данных, а на коннект! плиз!
не говори что это не работает 12.07.01 01:10  
Автор: kabanchik Статус: Незарегистрированный пользователь
Отредактировано 06.08.01 00:23  Количество правок: 1
<"чистая" ссылка>
> Млин, да какой в %опу моя карточка имеет несколько ипи
> интресфейсов??
> Интерфейс один - ppp
:)))) ладно, жоживешь и до этого дня, что тебе bind() понадобится.

> Обесни плиз, хотябы используя WSAEventSelect()
> как сделать таймаут на коннект!, заметь не на приём или
> передачу данных, а на коннект! плиз!

вот тебе простой пример, не говори что это не работает :))))
откомпиль и юзай. специально для тебя накатал, не поленился :)))
можешь проверить с коммадой :
test -r www.bugtraq.ru -t 2000
=================

#include "stdlib.h"
#include "winsock2.h"

#pragma comment(lib, "ws2_32.lib")

SOCKET			g_socket;
ULONG			g_timeout;
sockaddr_in		g_addrLocal;
sockaddr_in		g_addrRemote;

void help()
{
	printf("Connection checking test programm.\n\n");
	printf("TEST -r remote_address [-p port_no] [-l local_address] [-t timeout]\n");
	printf("-r remote_address		remote server address\n");
	printf("-p port_no			remote server port address\n");
	printf("-l local_address		local IP address\n");
	printf("-t timeout			connection waiting timeout in milliseconds\n\n");
	printf("sample :\n");
	printf("TEST -r www.microsoft.com -p 80 -l 195.128.0.1 -t 2000\n\n");
}

void Init()
{
	WSADATA wd;
	WSAStartup(MAKEWORD(2, 2), &wd);

	g_socket = INVALID_SOCKET;
	g_timeout= 0xFFFFFFFF;
	memset(&g_addrLocal, 0, sizeof(sockaddr_in));
	memset(&g_addrRemote, 0, sizeof(sockaddr_in));

	g_addrRemote.sin_addr.s_addr = INADDR_NONE;
	g_addrRemote.sin_family	= AF_INET;
	g_addrLocal.sin_addr.s_addr  = INADDR_NONE;
	g_addrLocal.sin_family = AF_INET;
}

void Exit()
{
	WSACleanup();

	if (g_socket != INVALID_SOCKET)
	{
		closesocket(g_socket);
		g_socket = INVALID_SOCKET;
	}
}

BOOL GetAddress(char* szAddress, sockaddr_in *sockAddr)
{
	if (szAddress == NULL|sockAddr == NULL)
		return NULL;

	ULONG nAddr = inet_addr(szAddress);
	if (nAddr == INADDR_NONE)
	{
		hostent *host = gethostbyname(szAddress);
		if (host == NULL)
			return FALSE;

		nAddr = *((ULONG *)host->h_addr);
	}

	sockAddr->sin_addr.s_addr = nAddr;

	return (nAddr != INADDR_NONE);
}

BOOL ValidateArgs(int argc, char* argv[])
{
	if (argc < 3)
		return FALSE;

	char *szRemoteAddr = NULL;
	char *szLocalAddr  = NULL;
	char *port = NULL;
	char *timeout = NULL;

	char *pch;

	for (int i = 1; i < argc; i ++)
	{
		pch = argv[i];
		if (*pch == '-'|*pch == '/')
		{
			pch ++;

			switch (*pch)
			{
			case	'r':
				szRemoteAddr = argv[i + 1];
				if (*szRemoteAddr != '-' && *szRemoteAddr != '/')
				{
					i ++;
					if (!GetAddress(szRemoteAddr, &g_addrRemote))
						return FALSE;
				}
				break;

			case	'p':
				port = argv[i + 1];
				if (*port != '-' && *port != '/')
				{
					i ++;
					g_addrRemote.sin_port = htons((u_short)atoi(port));
				}
				break;

			case	'l':
				szLocalAddr = argv[i + 1];
				if (*szLocalAddr != '-' && *szLocalAddr != '/')
				{
					i ++;
					if (!GetAddress(szLocalAddr, &g_addrLocal))
						return FALSE;
				}
				break;

			case	't':
				timeout = argv[i + 1];
				if (*timeout != '-' && *timeout != '/')
				{
					i ++;
					g_timeout = (u_long)atol(timeout);
				}
				break;

			default:
				return FALSE;

			}
		}
	}

	if (g_addrRemote.sin_port == 0)
		g_addrRemote.sin_port = htons(80);

	return (g_addrRemote.sin_addr.s_addr != INADDR_NONE);
}

BOOL CreateSocket()
{
	g_socket = socket(AF_INET, SOCK_STREAM, 0);
	if (g_addrLocal.sin_addr.s_addr != INADDR_NONE)
		return (bind(g_socket, (sockaddr*)&g_addrLocal, sizeof(sockaddr_in)) != SOCKET_ERROR);
	else
		return (g_socket != INVALID_SOCKET);

}

BOOL Connect()
{
	if (g_socket == INVALID_SOCKET)
		return FALSE;

	u_long block = 1;
	if (ioctlsocket(g_socket, FIONBIO, &block) == SOCKET_ERROR)
		return FALSE;


	fd_set	writefds;
	FD_ZERO(&writefds);
	FD_SET(g_socket, &writefds);
	
	TIMEVAL	timeout = {(long)(g_timeout / 1000), (long)(g_timeout - (g_timeout / 1000) * 1000)};

	int err;
	connect(g_socket, (sockaddr*)&g_addrRemote, sizeof(sockaddr_in));
	err = select(0, NULL, &writefds, NULL, g_timeout != 0xFFFFFFFF ? &timeout : NULL);

	if (err == SOCKET_ERROR)
		return FALSE;
	else if (err == 0)
		printf("connetion is not established, due timeout.\n");
	else
		printf("connection establised\n");

	return TRUE;
}

int main(int argc, char* argv[])
{
	Init();

	if (!ValidateArgs(argc, argv))
		help();
	else if (!CreateSocket()|!Connect())
		printf("error established during programm running.\n");

	Exit();

	printf("\npress any key to exit programm.\n");
	getchar();
	return 0;
}

---
не говори что это не работает 06.08.01 07:25  
Автор: leha Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Млин, да какой в %опу моя карточка имеет несколько ипи
> > интресфейсов??
> > Интерфейс один - ppp
> :)))) ладно, жоживешь и до этого дня, что тебе bind()
> понадобится.
>
> > Обесни плиз, хотябы используя WSAEventSelect()
> > как сделать таймаут на коннект!, заметь не на приём
> или
> > передачу данных, а на коннект! плиз!
>
> вот тебе простой пример, не говори что это не работает
> :))))
> откомпиль и юзай. специально для тебя накатал, не поленился
> :)))
> можешь проверить с коммадой :
> test -r www.bugtraq.ru -t 2000
пример не привожу но у меня это не работает под qnx
вернее работает но точно так же долго как и раньше когда я проверял тупо в лоб if (connect(sock,&server,sizeoff(server))<0
правда может это мои кривые руки, а при создании сокета нельзя указать время ожидания, ведь эти пять минут как то задаются.
не говори что это не работает 07.08.01 00:58  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> пример не привожу но у меня это не работает под qnx
> вернее работает но точно так же долго как и раньше когда я
> проверял тупо в лоб
> if(connect(sock,&server,sizeoff(server))<0
вопрос - тут у тебя всегда возвращает -1 ???

> правда может это мои кривые руки, а при создании сокета
> нельзя указать время ожидания, ведь эти пять минут как то
> задаются.

попробуй выслать кусок побольше. а то не знаю как написал. может что упустил?

попробуй сначала откомпилить только этот пример, естественно заменив на УНИХ хедеры. и просмотри результат сначала на УНИХ машинке а потом на QNX.
не говори что это не работает 07.08.01 05:54  
Автор: leha Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > пример не привожу но у меня это не работает под qnx
> > вернее работает но точно так же долго как и раньше
> когда я
> > проверял тупо в лоб
> > if(connect(sock,&server,sizeoff(server))<0
> вопрос - тут у тебя всегда возвращает -1 ???
нет конечно, только если нет конекта при чем если упал сервер то проверка идет очень быстро и это не критично, а вот если скажем выдернули шнурок из сетевой карточки, то все туши свет уйдя в IF выходим минут через пять
> > правда может это мои кривые руки, а при создании
> сокета
> > нельзя указать время ожидания, ведь эти пять минут как
> то
> > задаются.
>
> попробуй выслать кусок побольше. а то не знаю как написал.
> может что упустил?
>
> попробуй сначала откомпилить только этот пример,
> естественно заменив на УНИХ хедеры. и просмотри результат
> сначала на УНИХ машинке а потом на QNX.
<без заголовка> 08.08.01 00:15  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
единственное что в голову приходит - проверь select();
ну и еще некоторое подозрение, что очень вероятно, - это все таки дело системы. QNX все таки не полноценная система. очень хорошая игрушка, но не профессиональная. так что не мудрено, что некоторые вещи урезаны, иначе на дискете не поместиться ;-)))

сорри, больше ничем помочь не могу пока.

удачи.
Аааа мля кабан по ночам дыры затыкает!!!! 06.08.01 01:15  
Автор: duh Статус: Незарегистрированный пользователь
<"чистая" ссылка>
а что? разве так не наглядней? смотри какой красивый код получился ;-) 07.08.01 00:52  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
вопрос не в тему 12.07.01 07:07  
Автор: Бяша <Biasha> Статус: Member
<"чистая" ссылка>
Ну ты блин не ленивый.
только <рrе>,</рrе> ставь (мне когда-то XR кажется подсказал), а то очень смешной исходник выходит.
(кстати, сейчас можно редактировать сообщения)

Так вот вопрос не в тему:
я слышал, что есть программки, создающие выравнивание и т. д. в исходниках. Не знаете хорошую какую-то? А то выравнивать самому задалбывает, но не настолько сильно и часто, чтоб писать для этого программку (хотя должно быть этим закончится однажды).
ответ не в тему 13.07.01 11:44  
Автор: XR <eXtremal Research> Статус: The Elderman
<"чистая" ссылка>

> Так вот вопрос не в тему:
> я слышал, что есть программки, создающие выравнивание и т.
> д. в исходниках. Не знаете хорошую какую-то? А то
> выравнивать самому задалбывает, но не настолько сильно и
> часто, чтоб писать для этого программку (хотя должно быть
> этим закончится однажды).

Я например пользуюсь для этих целей (и вообще использую как IDE)
VisualSlickEdit - есть версии и для Win и для различных *NIX (HPUX,Linux,Solaris.AIX,IRIX)
Там есть такая фича Beautify, которая позволяет
причесать сорец в выбранном тобой (ANSI,Algol,etc) или даже собственном стиле и
кучу других удобных фич (M$VisualStudio тут просто отдыхает)
Короче описывать все возможности работы с исходными текстами на C/C++/Java
тут просто места не хватит :)

Кряки для win версии валяются где то в районе crack.am :)
(делают их demo полноценную версию)

а вот в интеграции он разумеется проигрывает как любая мультиплатформенная система.
Пример работы (Style 1) остальные варианты стилей приводить не буду :) 13.07.01 11:47  
Автор: XR <eXtremal Research> Статус: The Elderman
<"чистая" ссылка>
#include "stdlib.h" 
#include "winsock2.h" 

#pragma comment(lib, "ws2_32.lib") 

SOCKET g_socket; 
ULONG g_timeout; 
sockaddr_in g_addrLocal; 
sockaddr_in g_addrRemote; 

void help() 
{ 
    printf("Connection checking test programm.\n\n"); 
    printf("TEST -r remote_address [-p port_no] [-l local_address] [-t timeout]\n"); 
    printf("-r remote_address remote server address\n"); 
    printf("-p port_no remote server port address\n"); 
    printf("-l local_address local IP address\n"); 
    printf("-t timeout connection waiting timeout in milliseconds\n\n"); 
    printf("sample :\n"); 
    printf("TEST -r www.microsoft.com -p 80 -l 195.128.0.1 -t 2000\n\n"); 
} 

void Init() 
{ 
    WSADATA wd; 
    WSAStartup(MAKEWORD(2, 2), &wd); 

    g_socket = INVALID_SOCKET; 
    g_timeout= 0xFFFFFFFF; 
    memset(&g_addrLocal, 0, sizeof(sockaddr_in)); 
    memset(&g_addrRemote, 0, sizeof(sockaddr_in)); 

    g_addrRemote.sin_addr.s_addr = INADDR_NONE; 
    g_addrRemote.sin_family = AF_INET; 
    g_addrLocal.sin_addr.s_addr = INADDR_NONE; 
    g_addrLocal.sin_family = AF_INET; 
} 

void Exit() 
{ 
    WSACleanup(); 

    if (g_socket != INVALID_SOCKET) {
        closesocket(g_socket); 
        g_socket = INVALID_SOCKET; 
    }
} 

BOOL GetAddress(char* szAddress, sockaddr_in *sockAddr) 
{ 
    if (szAddress == NULL|sockAddr == NULL)
        return NULL;

    ULONG nAddr = inet_addr(szAddress); 
    if (nAddr == INADDR_NONE) {
        hostent *host = gethostbyname(szAddress); 
        if (host == NULL)
            return FALSE;

        nAddr = *((ULONG *)host->h_addr); 
    }

    sockAddr->sin_addr.s_addr = nAddr; 

    return(nAddr != INADDR_NONE); 
} 

BOOL ValidateArgs(int argc, char* argv[]) 
{ 
    if (argc < 3)
        return FALSE;

    char *szRemoteAddr = NULL; 
    char *szLocalAddr = NULL; 
    char *port = NULL; 
    char *timeout = NULL; 

    char *pch; 

    for (int i = 1; i < argc; i ++) {
        pch = argv[i]; 
        if (*pch == '-'|*pch == '/') {
            pch ++; 

            switch (*pch) {
            case 'r': 
                szRemoteAddr = argv[i + 1]; 
                if (*szRemoteAddr != '-' && *szRemoteAddr != '/') {
                    i ++; 
                    if (!GetAddress(szRemoteAddr, &g_addrRemote))
                        return FALSE;
                }
                break; 

            case 'p': 
                port = argv[i + 1]; 
                if (*port != '-' && *port != '/') {
                    i ++; 
                    g_addrRemote.sin_port = htons((u_short)atoi(port)); 
                }
                break; 

            case 'l': 
                szLocalAddr = argv[i + 1]; 
                if (*szLocalAddr != '-' && *szLocalAddr != '/') {
                    i ++; 
                    if (!GetAddress(szLocalAddr, &g_addrLocal))
                        return FALSE;
                }
                break; 

            case 't': 
                timeout = argv[i + 1]; 
                if (*timeout != '-' && *timeout != '/') {
                    i ++; 
                    g_timeout = (u_long)atol(timeout); 
                }
                break; 

            default: 
                return FALSE; 

            } 
        }
    } 

    if (g_addrRemote.sin_port == 0)
        g_addrRemote.sin_port = htons(80);

    return(g_addrRemote.sin_addr.s_addr != INADDR_NONE); 
} 

BOOL CreateSocket() 
{ 
    g_socket = socket(AF_INET, SOCK_STREAM, 0); 
    if (g_addrLocal.sin_addr.s_addr != INADDR_NONE)
        return(bind(g_socket, (sockaddr*)&g_addrLocal, sizeof(sockaddr_in)) != SOCKET_ERROR);
    else
        return(g_socket != INVALID_SOCKET); 

} 

BOOL Connect() 
{ 
    if (g_socket == INVALID_SOCKET)
        return FALSE;

    u_long block = 1; 
    if (ioctlsocket(g_socket, FIONBIO, &block) == SOCKET_ERROR)
        return FALSE;


    fd_set writefds; 
    FD_ZERO(&writefds); 
    FD_SET(g_socket, &writefds); 

    TIMEVAL timeout = {(long)(g_timeout / 1000), (long)(g_timeout - (g_timeout / 1000) * 1000)}; 

    int err; 
    connect(g_socket, (sockaddr*)&g_addrRemote, sizeof(sockaddr_in)); 
    err = select(0, NULL, &writefds, NULL, g_timeout != 0xFFFFFFFF ? &timeout : NULL); 

    if (err == SOCKET_ERROR)
        return FALSE;
    else if (err == 0)
        printf("connetion is not established, due timeout.\n");
    else
        printf("connection establised\n"); 

    return TRUE; 
} 

int main(int argc, char* argv[]) 
{ 
    Init(); 

    if (!ValidateArgs(argc, argv))
        help();
    else if (!CreateSocket()|!Connect())
        printf("error established during programm running.\n");

    Exit(); 

    printf("\npress any key to exit programm.\n"); 
    getchar(); 
    return 0;
}

---
зажал !!!??? :))))))))) 13.07.01 19:54  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
класс !!!
хорошо получилось.
надо бы пару приемчиков выучить.
и не только. если у dl можно на HTML тегах поиграть, то ша народ извращатся будет :)))
кстати, думаю хорошая идея поиграть с фонтами и цветами
ша проверим:)))

<font color="#FF0000"><font size=+3> доблестным защитникам города-героя Комсомольск-на-Амуре посвящается !!!! </font></font>
вопрос не в тему 12.07.01 15:13  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Ну ты блин не ленивый.
да я бы и не написал, если не 2 причины:
1) по BSD стандартату не пробовал connect ставить на таймаут - небольшое любопытство.
2) этот вопрос не раз подымался на форуме. вот и будет полный пример
и собственно на это не ушло много времени

> только <рrе>,</рrе> ставь (мне когда-то XR
> кажется подсказал), а то очень смешной исходник выходит.
> (кстати, сейчас можно редактировать сообщения)
я мало шарю в скриптах :))) и потом это было бы нагло, если бы все было идеально ))) да и смысла нет

>
> Так вот вопрос не в тему:
> я слышал, что есть программки, создающие выравнивание и т.
> д. в исходниках. Не знаете хорошую какую-то? А то
> выравнивать самому задалбывает, но не настолько сильно и
> часто, чтоб писать для этого программку (хотя должно быть
> этим закончится однажды).
знаю такую - Visual Studio - Alt + F8 :))) и прогу писать не надо.
хотя хорошая идея написать свою, чтобы отредактировал так как тебе удобно, а то тут он только TAB вставляет.
[C++] ещё не в тему 13.07.01 03:18  
Автор: Бяша <Biasha> Статус: Member
<"чистая" ссылка>
> > только <рrе>,</рrе> ставь (мне когда-то XR
> > кажется подсказал), а то очень смешной исходник
> выходит.
> > (кстати, сейчас можно редактировать сообщения)
> я мало шарю в скриптах :))) и потом это было бы нагло, если
> бы все было идеально ))) да и смысла нет
Я тоже :), это, кажется, не скрипты, это, если я не путаю, тег html называется.
Короче перед исходником ставишь первый, после - второй.

> знаю такую - Visual Studio - Alt + F8 :))) и прогу писать
> не надо.
Спасибо - не знал, удобно.

> хотя хорошая идея написать свою, чтобы отредактировал так
> как тебе удобно, а то тут он только TAB вставляет.
И чтоб переменные называла, как я привык :)

Так вот ещё не в тему:
у тебя написано в main: "else if (!CreateSocket()|!Connect())"
C++ гарантирует, что CreateSocket вызовется первым? Паскаль, если я не ошибаюсь, в таких случаях вызывал как хотел.
[C++] ещё не в тему 13.07.01 04:15  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > > только <рrе>,</рrе> ставь (мне
> когда-то XR
> > > кажется подсказал), а то очень смешной исходник
> > выходит.
> > > (кстати, сейчас можно редактировать сообщения)
> > я мало шарю в скриптах :))) и потом это было бы нагло,
> если
> > бы все было идеально ))) да и смысла нет
> Я тоже :), это, кажется, не скрипты, это, если я не путаю,
> тег html называется.
> Короче перед исходником ставишь первый, после - второй.
да, это теги HTML, но ведь это тоже скрипт :)


> > знаю такую - Visual Studio - Alt + F8 :))) и прогу
> писать
> > не надо.
> Спасибо - не знал, удобно.
>
> > хотя хорошая идея написать свою, чтобы отредактировал
> так
> > как тебе удобно, а то тут он только TAB вставляет.
> И чтоб переменные называла, как я привык :)
:))))))))) и програмку сам написал какую ты хочешь.

>
> Так вот ещё не в тему:
> у тебя написано в main: "else if (!CreateSocket()|
> !Connect())"

> C++ гарантирует, что CreateSocket вызовется первым?
> Паскаль, если я не ошибаюсь, в таких случаях вызывал как
> хотел.
угу 100%. я на паскаль окло 5-6 лет ничего не писал, так что не помню уже. а на С++ - это точно так. причем если CreateSocket() возвратит FALSE, то Connect() исполнятся не будет.
на сколько я помню у С и у PASCAL по расзному передовались переменные в стек для ф-ии, если ошибаюсь пуст подправят. у С переменные передаются в ф-ию идет с последнего к первого, т.е. с права на лево. пример
foo(pram1, param2, param3);
тогда передаются pama3 => param2 => param1.

тоже можно сказать и об этом:

int func()
{return 5;}

int n = 10;
foo(n = func(), n);
тоже что и - func(5, 10), т.е. сначала пойдет n=10.

но этого не скажешь насчет if(...) тут с лева на право 100%
не говори что это не работает 12.07.01 03:07  
Автор: myrmidon Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Спасибо!! щас посмарю че из этого выходит
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach