информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаЗа кого нас держат?Spanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[C++] ещё не в тему 13.07.01 03:18  Число просмотров: 860
Автор: Бяша <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-2025 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach