[fpc-pascal]Socket problems

Martyn Ranyard ranyardm at lineone.net
Tue Jul 16 14:34:48 CEST 2002

Hi all, this is my first post to this list, lets see if there are any 
knowledgable eager beavers out there.

I have a program that used to run fine (Compiled with Freepascal on Linux 
ix86 Slackware), but doesn't anymore - admittedly I am now running on a 
rebuilt machine, as the hard disk failed.

here's a snippet :

-------- 8<---------
   lSock := Socket(af_inet, sock_stream, 0);
   if lSock = -1 then SockError('Socket: ');

   with sAddr do
     Family := af_inet;
     Port := htons(ListenPort);
     Addr := 0;

   Writeln('Listening on port ',ListenPort);
   if not Bind(lSock, sAddr, sizeof(sAddr)) then SockError('Bind: ');
-------- 8<---------

ListenPort is a word containing 7878

Which when compiled with -Sd gives an exception and with -S2 gives an error 
message :

(ppc386 -Sd program ; ./program)
An unhandled exception occurred at 0x08062E1D :
Access violation

(ppc386 -S2 program ; ./program)

Bind: Permission denied

Now, I am running as a normal user, but as root, the -S2 version runs 
without error, but does not answer on the port 7878, but on 198. (which 
explains why as a user I cannot bind to it, but why is it listening on 
198?)  The htons() is from inetaux.pas, the code for which is at the end of 
this email, but if I don't have it - and I think I should (the document 
that I have learned from provided the function) - the program doesn't error 
as a user, but even an nmap scan doesn't register any new ports open.

This is most confusing, as I'm sure you can appreciate, and any suggestions 
would be gratefully recieved.

htons() from inetaux.pas :

-------- 8<---------
function htons(i : Integer) : Integer;
    htons := lo(i) shl 8 or hi(i);
-------- 8<---------

Thanks all.

Martyn Ranyard
Free Software Advocate

jabber - joran at amessage.de
icq    - 122500800
irc    - Joran on oftc
msn    - ranyardm at hotmail.com
y!     - ranyardm
e      - ranyardm at lineone.net

More information about the fpc-pascal mailing list