Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
Помогите найти ошибку (внутри) 14.07.01 01:30 Число просмотров: 701
Автор: kabanchik Статус: Незарегистрированный пользователь
|
обрати внимание на - ^^^^^^^
> Вроде всё правильно, но нефига не шлёт пакет: > > SOCKET sock; > sockaddr_in in,out; > /////////////////////////////////////////////////////////// > / > char buf[10]; > for (int i=1;i<=10; i++) > buf[i - 1]='a'+i-1; > /////////////////////////////////////////////////////////// > / > memset(&in, 0, sizeof(sockaddr_in)); > memset(&out, 0, sizeof(sockaddr_in)); > /////////////////////////////////////////////////////////// > / > in.sin_family = AF_INET; > in.sin_addr.s_addr = htonl(INADDR_ANY);//MY_ADDR); > in.sin_port = htons(80); > > out.sin_family = AF_INET; > out.sin_addr.s_addr = inet_addr("195.34.32.11"); > out.sin_port = htons(80); > /////////////////////////////////////////////////////////// > / > sock = socket(AF_INET,SOCK_DGRAM,0); > /////////////////////////////////////////////////////////// > / > bind(sock,((sockaddr*)(&in)),sizeof(in)); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
во-первых это не к чему
во-вторых не понятны твои действия, потому как ты тут пытаешься связать сокет с несуществующим IP адресом - 255.255.255.255
либо закомментируй эту строку, либо связывай с настоящим IP
а если ты хочешь сделать broadcast, то пиши так
out.sin_addr.s_addr = htol(INADDR_ANY); тогда пакет будет послан просто всем тем кто ожидает.
> /////////////////////////////////////////////////////////// > sendto(sock, buf, 10, 0, ((sockaddr*)(&out)), sizeof(out));
твой код уместен, если ты вместо sendto используешь recvfrom, т.е. если у тебя серверная часть или конкретно если ты намерен подбирать все UDP пакеты в сетке.
в добавок советую всегда проверять на == SOCKET_ERROR; если такое происходит вызывай WSAGetLastError(); он тебе больше подскажет о возникшей проблеме.
|
<programming>
|
Помогите найти ошибку (внутри) 14.07.01 00:06
Автор: Access Статус: Незарегистрированный пользователь
|
Вроде всё правильно, но нефига не шлёт пакет:
SOCKET sock;
sockaddr_in in,out;
////////////////////////////////////////////////////////////
char buf[10];
for (int i=1;i<=10; i++)
buf[i - 1]='a'+i-1;
////////////////////////////////////////////////////////////
memset(&in, 0, sizeof(sockaddr_in));
memset(&out, 0, sizeof(sockaddr_in));
////////////////////////////////////////////////////////////
in.sin_family = AF_INET;
in.sin_addr.s_addr = htonl(INADDR_ANY);//MY_ADDR);
in.sin_port = htons(80);
out.sin_family = AF_INET;
out.sin_addr.s_addr = inet_addr("195.34.32.11");
out.sin_port = htons(80);
////////////////////////////////////////////////////////////
sock = socket(AF_INET,SOCK_DGRAM,0);
////////////////////////////////////////////////////////////
bind(sock,((sockaddr*)(&in)),sizeof(in));
///////////////////////////////////////////////////////////
sendto(sock, buf, 10, 0, ((sockaddr*)(&out)), sizeof(out));
|
|
Помогите найти ошибку (внутри) 14.07.01 01:30
Автор: kabanchik Статус: Незарегистрированный пользователь
|
обрати внимание на - ^^^^^^^
> Вроде всё правильно, но нефига не шлёт пакет: > > SOCKET sock; > sockaddr_in in,out; > /////////////////////////////////////////////////////////// > / > char buf[10]; > for (int i=1;i<=10; i++) > buf[i - 1]='a'+i-1; > /////////////////////////////////////////////////////////// > / > memset(&in, 0, sizeof(sockaddr_in)); > memset(&out, 0, sizeof(sockaddr_in)); > /////////////////////////////////////////////////////////// > / > in.sin_family = AF_INET; > in.sin_addr.s_addr = htonl(INADDR_ANY);//MY_ADDR); > in.sin_port = htons(80); > > out.sin_family = AF_INET; > out.sin_addr.s_addr = inet_addr("195.34.32.11"); > out.sin_port = htons(80); > /////////////////////////////////////////////////////////// > / > sock = socket(AF_INET,SOCK_DGRAM,0); > /////////////////////////////////////////////////////////// > / > bind(sock,((sockaddr*)(&in)),sizeof(in)); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
во-первых это не к чему
во-вторых не понятны твои действия, потому как ты тут пытаешься связать сокет с несуществующим IP адресом - 255.255.255.255
либо закомментируй эту строку, либо связывай с настоящим IP
а если ты хочешь сделать broadcast, то пиши так
out.sin_addr.s_addr = htol(INADDR_ANY); тогда пакет будет послан просто всем тем кто ожидает.
> /////////////////////////////////////////////////////////// > sendto(sock, buf, 10, 0, ((sockaddr*)(&out)), sizeof(out));
твой код уместен, если ты вместо sendto используешь recvfrom, т.е. если у тебя серверная часть или конкретно если ты намерен подбирать все UDP пакеты в сетке.
в добавок советую всегда проверять на == SOCKET_ERROR; если такое происходит вызывай WSAGetLastError(); он тебе больше подскажет о возникшей проблеме.
|
|
|