program trysocket;
uses
sockets,sysutils,winsock;
var
serverMessage : String;
clientMessage : array[0..19999] of char;
headerString : String;
ServerAddr : TInetSockAddr;
ClientAddr : TInetSockAddr;
ClientSocket : LongInt;
ServerSocket : LongInt;
ClientAddrSize : LongInt;
count : LongInt;
msglen : integer;
procedure PrintError(Const Msg :String);
begin
Writeln(Msg,SocketError);
Halt(100);
end;
begin
ServerSocket := fpSocket(AF_INET,SOCK_STREAM,0);
if ServerSocket = SOCKET_ERROR then
PrintError('Server Socket Error : ');
ServerAddr.sin_family := AF_INET;
ServerAddr.sin_port := htons(9090);
if fpBind(ServerSocket,@ServerAddr,SizeOf(ServerAddr)) = SOCKET_ERROR then
PrintError('Server Bind Error : ');
if fpListen(ServerSocket,1) = SOCKET_ERROR then
PrintError('Server Listen Error : ');
Writeln('Waiting for connection from client');
ClientAddrSize := SizeOf(ClientAddr);
ClientSocket := fpAccept(ServerSocket,@ClientAddr,@ClientAddrSize);
if ClientSocket = SOCKET_ERROR then
PrintError('Client Socket Accept Error : ');
Writeln('Client Socket Created ',ClientSocket);
count := fprecv(ClientSocket,@clientMessage,20000,0);
Writeln(clientMessage);
if (count <> SOCKET_ERROR) And (count > 0) then
begin
serverMessage := 'HTTP/1.1 200 OK' +#13+#10;
serverMessage := serverMessage + 'Date: Mon, 16 Jan 2017 01:00:53 GMT' + #13+#10;
// serverMessage := serverMessage + 'Server: MyServer (Win64)' + slinebreak;
// serverMessage := serverMessage + 'Last-Modified: Wed 22 Jul 2009 19:15:56 GMT'+slinebreak;
serverMessage := serverMessage + 'Content-Length: 71'+#13+#10;
serverMessage := serverMessage + 'Content-Type: text/html'+#13+#10;
serverMessage := serverMessage + 'Connection: Closed'+#13+#10;
serverMessage := serverMessage + '<html><title>Main Page</title><body><h1>Hello World!</h1></body></html>';
msglen := Length(serverMessage);
// Writeln(serverMessage);
Writeln(msglen);
fpSend(ClientSocket,@serverMessage,msglen,0);
end;
CloseSocket(ClientSocket);
end.