TLDR version: My Cerberus FTP server hangs every once in a while. Any help would be appreciated!
A couple weeks ago I started looking into FTP in hopes of getting my Cerberus board to act like a client, log into a remote server, save a file, and log out. (You can see my original link here.) That is still my final goal, however, I realized I know very little about FTP, networking in NETMF, or the ethernet side of things on the Cerberus. So I took a step back and am now trying to implement an FTP server on the Cerb, which has been done before and seems like a better starting point for me.
I have implemented the FTP server using a semi-modified version of this code. As of now I can use the FTP client that comes native with Windows 7 (from command line) to log into my Cerberus using a static IP (USER, PASS), get a list of files (NLST), upload and download files (STOR, RETR), and log out (QUIT). (I’m using the built in Windows FTP client because other clients are too advanced and use commands that are yet to be implemented in the code such as LIST and TYPE I). This is all I really want from the server and if it worked reliably I could use this as a workaround for getting files from the Cerb to a remote computer.
However, it does not seem to always work. This happens mostly during a transfer of a large (~1MB) file, but happens less frequently on many of the other commands as well (USER, PASS, NLST). I’m assuming this is because a single transfer of a large file contains many more actual packets being transferred.
I have been trying to use WireShark to debug and understand what is going wrong. I have several examples, but I will try to attach the ones that are shorter to start with as to not scare anyone away with walls of TCP packets. I’ve attached a successful connect/disconnect packet history (00_basicConnectDisconnect) as well as one which was unsuccessful and ‘froze’ after the USER command was issued (01_USER_unsuccessful). (Images are all I can upload I guess.)
Note that I’m using a Cerberus main board, ethernet firmware, static IP, connected through our local network. IP for Cerberus is 192.168.1.250 and IP for my local PC is 192.168.1.250. I am still using the NETMF 4.2 versions of everything as well.
Any help here would be great!