Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | | | |
не говори что это не работает 12.07.01 01:10 Число просмотров: 1055
Автор: 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;
}
---
|
<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 Статус: Незарегистрированный пользователь
|
Спасибо!! щас посмарю че из этого выходит
|
|
|