How to resolve the algorithm Sockets step by step in the Pascal programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Sockets step by step in the Pascal programming language

Table of Contents

Problem Statement

For this exercise a program is open a socket to localhost on port 256 and send the message "hello socket world" before closing the socket. Catching any exceptions or errors is not required.

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Sockets step by step in the Pascal programming language

Source code in the pascal programming language

Program Sockets_ExampleA;

Uses
  { Free Pascal RTL sockets unit }
  sockets;

Var
  TCP_Sock:    integer;
  Remote_Addr: TSockAddr;

  Message:     string;
  PMessage:    Pchar;
  Message_Len: integer;


Begin
  { Fill the record (struct) with the server's address information }
  With Remote_Addr do
  begin
    Sin_family := AF_INET;
    Sin_addr   := StrToNetAddr('127.0.0.1');
    Sin_port   := HtoNs(256);
  end;

  { Returns an IPv4 TCP socket descriptor }
  TCP_Sock := fpSocket(AF_INET, SOCK_STREAM, IPPROTO_IP);

  { Most routines in this unit return -1 on failure }
  If TCP_Sock = -1 then
  begin
    WriteLn('Failed to create new socket descriptor');
    Halt(1);
  end;

  { Attempt to connect to the address supplied above }
  If fpConnect(TCP_Sock, @Remote_Addr, SizeOf(Remote_Addr)) = -1 then
  begin
    { Specifc error codes can be retrieved by calling the SocketError function }
    WriteLn('Failed to contact server');
    Halt(1);
  end;

  { Finally, send the message to the server and disconnect }
  Message     := 'Hello socket world';
  PMessage    := @Message;
  Message_Len := StrLen(PMessage);

  If fpSend(TCP_Sock, PMessage, Message_Len, 0) <> Message_Len then
  begin
    WriteLn('An error occurred while sending data to the server');
    Halt(1);
  end;

  CloseSocket(TCP_Sock);
End.


Program Sockets_ExampleB;

Uses
  sockets;

Var
  TCP_Sock:    integer;
  Remote_Addr: TSockAddr;

  Message:     string;
  PMessage:    Pchar;
  Message_Len: integer;

Begin
  Remote_Addr.Sin_family := AF_INET;
  Remote_Addr.Sin_addr   := StrToNetAddr('127.0.0.1');
  Remote_Addr.Sin_port   := HtoNs(256);

  TCP_Sock := fpSocket(AF_INET, SOCK_STREAM, IPPROTO_IP);

  fpConnect(TCP_Sock, @Remote_Addr, SizeOf(Remote_Addr));

  Message     := 'Hello socket world';
  PMessage    := @Message;
  Message_Len := StrLen(PMessage);

  fpSend(TCP_Sock, PMessage, Message_Len, 0);
End.


  

You may also check:How to resolve the algorithm Pythagoras tree step by step in the J programming language
You may also check:How to resolve the algorithm Smallest number k such that k+2^m is composite for all m less than k step by step in the Julia programming language
You may also check:How to resolve the algorithm Loops/Do-while step by step in the Yorick programming language
You may also check:How to resolve the algorithm Abstract type step by step in the PARI/GP programming language
You may also check:How to resolve the algorithm Copy a string step by step in the Modula-3 programming language