tinysmb is a lightweight SMB client originally written by softdev for the GameCube. It is now included as part of libogc. It has since been updated by Tantric to use NTLM (with SMB dialect NT LM 0.12). In addition, rodries and scip have written a devoptab allowing SMB to be used uses via standard file operation functions (using a prefix of smb:/).
tinysmb follows the "SMB over IP" standard and so uses TCP port 445 by default, rather than the deprecated TCP ports 137-139. If this fails, it will attempt to establish a NBT session and use port 139. tinysmb requires NTLM for authentication (supported by all major Operating Systems). Tutorials for setting up a file share in Windows XP and Windows Vista are available.
Adding SMB support to your program is easy! All you need to do is initialize the network, and then make a call to smbInit() to connect to the SMB share. From there you can use standard file functions to access to the share by prefixing smb:/ to your path.