<html><body><div dir="ltr">Here’s what ChatGPT says. It just used the UNIX sockets API so nothing different from what you’d see in C. Looks pretty much correct to me but I didn’t try to build it.</div><div dir="ltr"><br></div><div dir="ltr"><div dir="ltr">program TCPClient;</div><div dir="ltr"><br></div><div dir="ltr">uses</div><div dir="ltr">  SysUtils, Sockets;</div><div dir="ltr"><br></div><div dir="ltr">const</div><div dir="ltr">  HOST = '127.0.0.1';</div><div dir="ltr">  PORT = 12345;</div><div dir="ltr"><br></div><div dir="ltr">var</div><div dir="ltr">  ClientSocket: LongInt;</div><div dir="ltr">  Address: TInetSockAddr;</div><div dir="ltr">  Buffer: array[0..1023] of Char;</div><div dir="ltr">  BytesReceived: LongInt;</div><div dir="ltr">begin</div><div dir="ltr">  // Create a socket</div><div dir="ltr">  ClientSocket := fpSocket(AF_INET, SOCK_STREAM, 0);</div><div dir="ltr">  if ClientSocket = -1 then</div><div dir="ltr">  begin</div><div dir="ltr">    WriteLn('Error creating client socket.');</div><div dir="ltr">    Halt(1);</div><div dir="ltr">  end;</div><div dir="ltr"><br></div><div dir="ltr">  // Connect to the server</div><div dir="ltr">  FillChar(Address, SizeOf(Address), 0);</div><div dir="ltr">  Address.sin_family := AF_INET;</div><div dir="ltr">  Address.sin_port := htons(PORT);</div><div dir="ltr">  Address.sin_addr := StrToHostAddr(HOST);</div><div dir="ltr"><br></div><div dir="ltr">  if fpConnect(ClientSocket, @Address, SizeOf(Address)) = -1 then</div><div dir="ltr">  begin</div><div dir="ltr">    WriteLn('Error connecting to server.');</div><div dir="ltr">    Halt(1);</div><div dir="ltr">  end;</div><div dir="ltr"><br></div><div dir="ltr">  WriteLn('Connected to server.');</div><div dir="ltr"><br></div><div dir="ltr">  // Send data to the server</div><div dir="ltr">  fpSend(ClientSocket, 'Hello from the client!', 23, 0);</div><div dir="ltr"><br></div><div dir="ltr">  // Receive response from the server</div><div dir="ltr">  BytesReceived := fpRecv(ClientSocket, @Buffer, SizeOf(Buffer) - 1, 0);</div><div dir="ltr">  if BytesReceived > 0 then</div><div dir="ltr">  begin</div><div dir="ltr">    Buffer[BytesReceived] := #0; // Null-terminate the string</div><div dir="ltr">    WriteLn('Received: ', Buffer);</div><div dir="ltr">  end;</div><div dir="ltr"><br></div><div dir="ltr">  // Close the socket</div><div dir="ltr">  fpClose(ClientSocket);</div><div dir="ltr">end.</div></div><div dir="ltr"><br></div><div dir="ltr"><div dir="ltr">program TCPServer;</div><div dir="ltr"><br></div><div dir="ltr">uses</div><div dir="ltr">  SysUtils, Sockets;</div><div dir="ltr"><br></div><div dir="ltr">const</div><div dir="ltr">  PORT = 12345;</div><div dir="ltr"><br></div><div dir="ltr">var</div><div dir="ltr">  ServerSocket, ClientSocket: LongInt;</div><div dir="ltr">  Address: TInetSockAddr;</div><div dir="ltr">  Buffer: array[0..1023] of Char;</div><div dir="ltr">  BytesReceived: LongInt;</div><div dir="ltr">begin</div><div dir="ltr">  // Create a socket</div><div dir="ltr">  ServerSocket := fpSocket(AF_INET, SOCK_STREAM, 0);</div><div dir="ltr">  if ServerSocket = -1 then</div><div dir="ltr">  begin</div><div dir="ltr">    WriteLn('Error creating server socket.');</div><div dir="ltr">    Halt(1);</div><div dir="ltr">  end;</div><div dir="ltr"><br></div><div dir="ltr">  // Bind the socket to a port</div><div dir="ltr">  FillChar(Address, SizeOf(Address), 0);</div><div dir="ltr">  Address.sin_family := AF_INET;</div><div dir="ltr">  Address.sin_port := htons(PORT);</div><div dir="ltr">  Address.sin_addr := htonl(INADDR_ANY);</div><div dir="ltr">  </div><div dir="ltr">  if fpBind(ServerSocket, @Address, SizeOf(Address)) = -1 then</div><div dir="ltr">  begin</div><div dir="ltr">    WriteLn('Error binding server socket.');</div><div dir="ltr">    Halt(1);</div><div dir="ltr">  end;</div><div dir="ltr"><br></div><div dir="ltr">  // Start listening for incoming connections</div><div dir="ltr">  if fpListen(ServerSocket, 5) = -1 then</div><div dir="ltr">  begin</div><div dir="ltr">    WriteLn('Error listening on server socket.');</div><div dir="ltr">    Halt(1);</div><div dir="ltr">  end;</div><div dir="ltr"><br></div><div dir="ltr">  WriteLn('Server is running on port ', PORT, '. Waiting for connections...');</div><div dir="ltr"><br></div><div dir="ltr">  // Accept a connection</div><div dir="ltr">  ClientSocket := fpAccept(ServerSocket, nil, nil);</div><div dir="ltr">  if ClientSocket = -1 then</div><div dir="ltr">  begin</div><div dir="ltr">    WriteLn('Error accepting connection.');</div><div dir="ltr">    Halt(1);</div><div dir="ltr">  end;</div><div dir="ltr"><br></div><div dir="ltr">  WriteLn('Client connected.');</div><div dir="ltr"><br></div><div dir="ltr">  // Receive data from the client</div><div dir="ltr">  BytesReceived := fpRecv(ClientSocket, @Buffer, SizeOf(Buffer) - 1, 0);</div><div dir="ltr">  if BytesReceived > 0 then</div><div dir="ltr">  begin</div><div dir="ltr">    Buffer[BytesReceived] := #0; // Null-terminate the string</div><div dir="ltr">    WriteLn('Received: ', Buffer);</div><div dir="ltr">  end;</div><div dir="ltr"><br></div><div dir="ltr">  // Send a response to the client</div><div dir="ltr">  fpSend(ClientSocket, 'Hello from the server!', 23, 0);</div><div dir="ltr"><br></div><div dir="ltr">  // Close sockets</div><div dir="ltr">  fpClose(ClientSocket);</div><div dir="ltr">  fpClose(ServerSocket);</div><div dir="ltr">end.</div></div><div dir="ltr">
    <br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Regards,</div>    Ryan Joseph</div></div><br>
</div>
<br>
<div class="gmail_quote">
    <div dir="ltr" class="gmail_attr">On Jan 11, 2025 at 7:46:50 PM, Duke Normandin via fpc-pascal <<a href="mailto:fpc-pascal@lists.freepascal.org">fpc-pascal@lists.freepascal.org</a>> wrote:<br></div>
    <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" type="cite">
        
<div>
<div>
    I’ve Googled my butt off looking for fpc/pascal examples<br>/tutorials on writing a simple tcp client and server. NO JOY! Anybody got any ideas? TIA<br>—<br>Duke<br>Sent from my iPhone<br>_______________________________________________<br>fpc-pascal maillist  -  <a href="mailto:fpc-pascal@lists.freepascal.org">fpc-pascal@lists.freepascal.org</a><br><a href="https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal">https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal</a><br>
</div>
</div>
    </blockquote>
</div></body></html>