![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сокеты Win32 [D6, WinXP]
SkyRanger © (2003-05-17 08:07:00)Делаю так как написанно в книге: (правда там примеры на Си, но это фигня)
var
buf:string;
re : integer;
s : TSocket;
s1 : TSocket;
addr : TSockAddrIn;
begin
addr.sin_family:=AF_INET;
addr.sin_port:=htons(7500);
addr.sin_addr.S_addr:=htonl( INADDR_ANY );
try
s := socket(AF_INET, SOCK_STREAM, 0 );
except
ShowMessage("EXCEPT! Ошибка вызова socket:"+IntToStr(re)+" "+GetLastErrorStr());
end;
if (s<0) then ShowMessage("ошибка вызова socket:"+IntToStr(re)+" "+GetLastErrorStr());
try
re := bind( s, addr, sizeof( addr ) );
except
ShowMessage("EXCEPT! Ошибка вызова bind:"+IntToStr(re)+" "+GetLastErrorStr());
end;
if (re <> 0) then ShowMessage("ошибка вызова bind:"+IntToStr(re)+" "+GetLastErrorStr());
try
re := listen( s, 5 );
except
ShowMessage("EXCEPT! Ошибка вызова listen:"+IntToStr(re)+" "+GetLastErrorStr());
end;
if (re <> 0) then ShowMessage("ошибка вызова listen:"+IntToStr(re)+" "+GetLastErrorStr());
try
s1 := accept( s, NIL, NIL );
except
ShowMessage("EXCEPT! Ошибка вызова accept:"+IntToStr(re)+" "+GetLastErrorStr());
end;
if (re <> 0) then ShowMessage("ошибка вызова accept:"+IntToStr(re)+" "+GetLastErrorStr());
try
re:=recv(s1,buf,1,0);
except
ShowMessage("EXCEPT! Ошибка вызова recv");
end;
if (re < 0) then ShowMessage("ошибка вызова recv:"+IntToStr(re)+" "+GetLastErrorStr())
else
ShowMessage(buf);
end;
Он мне выдает ошибку 10093 WSANOTINITIALISED...
Я сделал все как в книге, так что должно работать а не работает! что тут может быть???
Книгу можете качнуть отсюда skyr.newmail.ru
Digitman (2003-05-19 08:51:00) [1]
> Malder
))
ну ты прямо из меня монстра какого-то делаешь)))
> SkyRanger
"Все заработало", говоришь ?)
И блоки exept - тоже ??!) Да ни в жисть !!)
"И в книге нефига не сказанно", говоришь ?)
Правильно, не сказано !)
Открываем хэлп на, например, ф-ции listen (да практически - на любой из ф-ций WinsockAPI) и читаем внимательно :
Return Values
If no error occurs, listen returns zero. Otherwise, a value of SOCKET_ERROR is returned, and a specific error code can be retrieved by calling WSAGetLastError.
И где здесь хоть какое-либо упоминание об ObjectPascal-исключениях ?)
Ну и как же "ругаться" опосля этого ?) по-аглицки ?) или по-непоаглицки , но аглицким прононсом ?)
SkyRanger (2003-05-17 12:28:00) [2]Спасибо!
Все заработало!
Просто примеры под Unix а там дело немногопо другому обстоит! И в книге нефига не сказанно! :(
Malder (2003-05-17 12:24:00) [3]Ага, глянь что за зверь, лучше статьи почитай...
>>Сейчас придет Digitman и будет грязно ругаться по английски :-)
А это почему???
Любит он это дело :-)
SkyRanger (2003-05-17 12:05:00) [4]А конкретнее В КНИГЕ ТАК НАПИСАННО! Ща конечно гляну че это за звери, но желательно конкретнее...
>>Сейчас придет Digitman и будет грязно ругаться по английски :-)
А это почему???
Malder (2003-05-17 11:00:00) [5]Сейчас придет Digitman и будет грязно ругаться по английски :-)
to SkyRanger
А где WSAStartup/WSACleanup ?