Появилась необходимость написать что-то вроде http-бота (маленького такого демона), который висит в системе и отвечает всем, кто заходит на localhost определённым образом. Всё бы ничего, но написать надо на WinSock (и ничего больше - на всём остальном я и сам могу) Не могу вспомнить, как заставить отвечать сокет на все запросы... Вот, что я восстановил в своей голове:
...<br /> var<br /> s:tsocket;<br /> D:WSAData;<br /> a:TSockAddr;<br /> buf:string;<br /> ...<br /> begin<br /> ...<br /> if WSAStartup($101,D)<>0 then exit;<br /> A.sin_family:=AF_INET;<br /> A.sin_addr.S_addr:=inet_addr(pchar("127.0.0.1"));<br /> S:=socket(AF_INET,SOCK_STREAM,0);<br /> if S=INVALID_SOCKET then showmessage('invalid socket');<br /> A.sin_port:=htons(80);<br /> if bind(S,A,sizeof(A))<> 0 then showmessage('no bind'); { вот тут уже не уверен }<br /> ...<br /> [а что вот тут?]<br /> ...<br /> WSACleanup;<br /> ...
Проблема не столько в том, как послать, а в том, как обнаружить коннект? Вроде надо использовать licten и recv/send ...