Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

socket

4.8K
19 ноября 2003 года
yak
12 / / 19.11.2003
Какие могут быть причины в том что данные в куске кода(сервер) не пересылаются в сокет(клиент IE)

send(sock,reply,length,0);
473
25 ноября 2003 года
Azazell
49 / / 20.12.1999
вообще-то есть такая функция
int WSAGetLastError();
Описание ошибок есть в МСДН.
Основные ошибки:
1. Если сокет типа SOCK_STREAM, тогда он может быть не подключенным.
2. Если подключен, тогда может соединение оборвано слиентом.
3. Может быть у тебя "неправильные" данные для отсылки.
А вообще почитай документацию на HTTP протокол.
если клиент IE, тогда скорей всего он закрыл твоё подключение.
4.8K
25 ноября 2003 года
yak
12 / / 19.11.2003
Цитата:
Originally posted by Azazell
вообще-то есть такая функция
int WSAGetLastError();
Описание ошибок есть в МСДН.
Основные ошибки:
1. Если сокет типа SOCK_STREAM, тогда он может быть не подключенным.
2. Если подключен, тогда может соединение оборвано слиентом.
3. Может быть у тебя "неправильные" данные для отсылки.
А вообще почитай документацию на HTTP протокол.
если клиент IE, тогда скорей всего он закрыл твоё подключение.




Вот кусок кода :
даже самопальный клиент не получает данных из сокета
int main(int argc, char* argv[])
{
SOCKET srv,cln;
WSADATA wsa;
HOSTENT *hst;
char hstname[64],ipname;
sockaddr_in saddr,caddr;
int error,caddr_sz;

socket(AF_INET,SOCK_STREAM,0);

saddr.sin_family = AF_INET;
saddr.sin_port = htons(PORT);
saddr.sin_addr.S_un.S_addr = INADDR_ANY;

bind(srv,(sockaddr*)&saddr,sizeof(saddr));
listen(srv,2);
caddr_sz = sizeof(caddr);
while(cln = accept(...))
DWORD thID;
CreateThread(NULL,NULL,sexToCln,&cln,NULL,&thID);
}
return 0;
}

DWORD WINAPI sexToCln(LPVOID sock){
SOCKET msock;
char *buff,*reply;
int brecv,i,len;

msock=((SOCKET*) sock)[0];
buff= new char(10);
brecv = recv(msock,buff,sizeof(buff),MSG_PEEK);
reply = "HTTP/1.0 200 OK\nContent-Type: text/html\n\n<html><title>hello</title><body><h1>st11-1</h1></body></html>\n\n";

len = strlen(reply);
send(msock,reply,len,0);

closesocket(msock);
return 0;
}

473
03 декабря 2003 года
Azazell
49 / / 20.12.1999
...while(cln = accept(...)) [color=green]//тут ты получаешь инициализированный сокет, который подключен к твоему клинту[/COLOR]

....msock=((SOCKET*) sock)[0];[color=green]//тут ты создаешь указатель на сокет...[/COLOR]
send(msock,reply,len,0);[color=green]// а тут ты пытаешься отослать ответ на неинициализированный сокет, и winsocks не знает куда его слать..[/COLOR]

[COLOR=blue]ты почему не попробовал WSAGetLastError() я же тебе говорил это название, если бы ты посмотрел, то сразу получил бы ошибку, которую смог бы исправить... [/COLOR]
4.8K
03 декабря 2003 года
yak
12 / / 19.11.2003
Цитата:
Originally posted by Azazell
...while(cln = accept(...)) [color=green]//тут ты получаешь инициализированный сокет, который подключен к твоему клинту[/COLOR]

....msock=((SOCKET*) sock)[0];[color=green]//тут ты создаешь указатель на сокет...[/COLOR]
send(msock,reply,len,0);[color=green]// а тут ты пытаешься отослать ответ на неинициализированный сокет, и winsocks не знает куда его слать..[/COLOR]

[COLOR=blue]ты почему не попробовал WSAGetLastError() я же тебе говорил это название, если бы ты посмотрел, то сразу получил бы ошибку, которую смог бы исправить... [/COLOR]



Спасибо за совет, все заработало - результат ошибок - всего лишь лень :(

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог