Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Чуть не понятно о winsock на делфи (https://forum.antichat.xyz/showthread.php?t=114227)

diznt 02.04.2009 16:04

Чуть не понятно о winsock на делфи
 
Мне в нем не понятно 2 вещи это:
1-Как подключиться к хосту с помощью WinSock?
Сначало без if'a можно? Или через if не возможно коннект установить? (да я знаю что if проверяет но многие пишут проверку а в итоге перед проверкой не стоит коннект с WinSock!)
2-Как проверить что не удалось подкл к хосту?

razb 02.04.2009 16:28

Цитата:

1-Как подключиться к хосту с помощью WinSock?
Заполни sockaddr структуру и коннектись к хосту(это для POSIX сокетов хотя в wsa тоже самое, они на этих стандартах и построены)
Цитата:

2-Как проверить что не удалось подкл к хосту?
смотри что connect() вернет

П.С. документации в инете море мог и не спрашивать, все довольно хорошо написано))

diznt 02.04.2009 17:05

razb без примеров я твои слова не могу разжувать

Hellsp@wn 02.04.2009 17:32

у тебя в голове каша, читай:

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1021
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1060

diznt 02.04.2009 17:53

Hellsp@wn спасибо огромное!
почитаю обязательно

razb 02.04.2009 18:16

diznt я же говорил инфи предостаточно)

slesh 02.04.2009 23:11

блин, на самом ачате сотни тем в которых перетералось это.
Код:

var
buf:array[0..1023] of char;
WSData:TWSAData; 
so:thandle; // дескриптор сокета
ca:sockaddr_in; // для настройки коннекта
begin
write('[*] WSAStartup...');
if WSAStartup($101, WSData)=-1 then // делаем инит сокетов
 begin
  write('ERROR');
  exit;
end;
writeln('OK');
write('[*] Create Socket...');
so:=socket(AF_INET, SOCK_STREAM, 0); // содаем сокет
if so=-1 then
 begin
  writeln('ERROR');
  exit;
 end;
writeln('OK');
ca.sin_family:=AF_INET;
ca.sin_port:=htons(80); // тут задаем порт
ca.sin_addr.s_addr:=inet_addr('127.0.0.1'); // тут задаем IP адрес. Доменные имена незя, нуна резолвить
write('[*] Connect to server...');
if connect(so,ca,sizeof(ca))=-1 then // коннектимся
 begin // если нет коннекта
  closesocket(so); // закрываем сокет
  writeln('ERROR');
  exit;
end;
writeln('OK');
send(so,buf,sizeof(buf),0); // пишем данные
recv(so,buf,sizeof(buf),0); // читаем данные
closehandle(so); // закрываем сокет

Примерно так всё выглядит )

Algol 03.04.2009 15:04

Цитата:

Сообщение от slesh
блин, на самом ачате сотни тем в которых перетералось это.
Код:

var
buf:array[0..1023] of char;
WSData:TWSAData; 
...

Примерно так всё выглядит )

Это не катит, там If-ы есть :D

slesh 03.04.2009 21:12

2 Algol
Про cmp никто не говорил :-P
ret:=connect(...);
asm
cmp ret,0ffffffffh
jne @@next1
ret
@@next1:
end;


Время: 05:31