Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.01.09;
Скачать: [xml.tar.bz2];

Вниз

Кодинг сокетов юзая winsock в Дэлфи   Найти похожие ветки 

 
lkj   (2003-11-07 13:45) [0]

Я под компилю код, а он мне выдает ошыбку "Types of actual formal var parameters must be identical" на следущей строке:
NewSock:=Accept(Sock,@NewAddr,SizeOf(NewAddr));

Что неправильно? WSAStartUp сделал, socket, bind, listen, все есть


 
Вася Пупкин   (2003-11-07 17:56) [1]

NewSock:=Accept(Sock,@NewAddr,SizeOf(NewAddr));
замени на
NewSock:=Accept(Sock,NewAddr,SizeOf(NewAddr));
скорее всего, дело именно в этом


 
lkj   (2003-11-08 16:26) [2]

Все равно та же мессага


 
Вася Пупкин   (2003-11-08 16:56) [3]

Версия Delphi ? что используешь (winsock или winsock2)?
Посмотри объявление Accept в соотв. модуле - могут быть варианты
winsock.pas D6:
function accept(s: TSocket; addr: PSockAddr; addrlen: PInteger): TSocket; stdcall;
winsock2.pas
function accept( const s: TSocket; var addr: TSockAddr; var addrlen: Integer ): TSocket; stdcall;

Проверь соответствие типов sock и NewAddr.


 
Вася Пупкин   (2003-11-08 17:05) [4]

упс.... только что обратил внимание -)
вот твоя ошибка:
SizeOf(NewAddr));
вместо этого заведи переменную AddrLen:integer и пиши примерно так:
NewSock:=Accept(Sock,@NewAddr,@AddrLen);


 
lkj   (2003-11-08 20:18) [5]

Не, не помагает, народ, вот сырец, где тут может быть ошибка?
var
Sock,NewSock:TSocket;
Addr,NewAddr:TSockAddr;
WSAData:TWSAData;
begin
WSAStartUp(MakeWord(2,0),WSAData);
Sock:=Socket(AF_INET,SOCK_STREAM,0);
Addr.sin_addr.s_addr:=INADDR_ANY;
Addr.sin_port:=htons(PORT);
Bind(Sock,@addr,SizeOf(Addr));
Listen(Sock,10);
repeat
NewSock:=Accept(Sock,@NewAddr,SizeOf(NewAddr));
...
CloseSocket(NewSock);
until PARAM;
ShutDown(Sock,2);
WSACleanUp;
end;


 
Вася Пупкин   (2003-11-08 21:46) [6]

Брр... тебе же показали, где ошибка... -(
var
Sock,NewSock:TSocket;
Addr,NewAddr:TSockAddr;
WSAData:TWSAData;
AddrLen:integer;
begin
WSAStartUp(MakeWord(2,0),WSAData);
Sock:=Socket(AF_INET,SOCK_STREAM,0);
Addr.sin_addr.s_addr:=INADDR_ANY;
Addr.sin_port:=htons(4000);

Bind(Sock,addr,SizeOf(Addr));

Listen(Sock,10);
repeat

NewSock:=Accept(Sock,@NewAddr,@AddrLen);

...


 
lkj   (2003-11-09 00:22) [7]

Я именно так и попробовал, всеравно та же ошибка =(
ЗЫ у мя Дэлфи6 (на всякий случай)


 
Вася Пупкин   (2003-11-09 00:38) [8]

У меня тоже D6 - все компилируется без ошибок - код скопирован прямо из Delphi( проверял в D6 SP2, uses winsock)
Попробуй по-простому copy-paste и потом откомпилировать код, который я тебе дал - будут ли ошибки "Types of actual formal var parameters must be identical" . ИМХО, не должно быть.
ps Странно, что у тебя "ругалось" только на Accept, в приведенном коде в Bind тоже была ошибка.



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2004.01.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.012 c
1-25348
SergLight
2003-12-22 11:32
2004.01.09
Ошибка в TCombobox


14-25529
JibSkeart
2003-12-19 12:01
2004.01.09
найти наибольших 2 элемента в 6 переменных не прибегая к массиву


1-25324
AndrewK
2003-12-22 14:50
2004.01.09
Как в TVirtualStringTree создать структуру?


9-25169
At
2003-06-16 13:35
2004.01.09
Стрельба


7-25632
cdadmitriy
2003-10-29 09:50
2004.01.09
CreateIOcompletionPort





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский