<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>