Olvasd át a winsocks doksit, sok hasznos info van benne.
Ezenkívűl ajánlom figyelmedbe a FreePascal-ban található Sockets unit-ot. Ebben is főleg a Bind, Listen, Accept eljárásokat...
A következő példát a Sockets.Accept eljárás dokumentációjában találod (angolul):
Program server;
{
A program teszteli a Sockets unit-ot, írta Michael van Canneyt és Peter Vreman
Szerver változat, Először futtasd a sock_svr programot, hogy létrehozza a socket-et és csak azután a
sock_cli programot amely így kapcsolódhat a socket-hez
}
uses Sockets;
Var
FromName : string;
Buffer : string[255];
S : Longint;
Sin,Sout : Text;
SAddr : TInetSockAddr;
procedure perror (const S : string);
begin
writeln (S,SocketError);
halt(100);
end;
begin
S:=Socket (AF_INET,SOCK_STREAM,0);
if SocketError<>0 then
Perror ('Szerver : Socket : ' );
SAddr.sin_family:=AF_INET;
{ port 50000 in network order }
SAddr.sin_port:=htons(50000);
SAddr.sin_addr.s_addr:=0;
if not Bind(S,SAddr,sizeof(saddr)) then
PError ('Szerver : Kapcsol(Bind) : ' );
if not Listen (S,1) then
PError ('Szerver : Halgat(Listen) : ' );
Writeln('Várakozás a kliens kapcsolódására, most futtasd a sock_cli programot egy másikterminál ablakban' );
if not Accept (S,FromName,Sin,Sout) then
PError ('Szerver : Elfogad(Accept) : '+fromname);
Reset(Sin);
ReWrite(Sout);
Writeln(Sout,'Üzenet a szervertől' );
Flush(SOut);
while not eof(sin) do
begin
Readln(Sin,Buffer);
Writeln('Szerver : Olvas(Read) : ',buffer);
end;
end.