It sounds like what you are trying to do cannot be done.
A TCP connection has two ends, the one from which is starts and the one to which it connects. Once the connections established, then data can pass both ways along it.
In Active FTP, the client makes a connection to the server. Then the server makes any number of connections back to the client. This means that your model of 2 TCP connections from the client to the server, one for upload and one for download does not fit with the connections both coming from the client.
I suspect what you are trying to do is to make two FTP sessions to the server. One of these for upload and one for download?
There is an article here
C# FTP Client Library[
^] which shows how to make an FTP session. I don't know if it is what you want (it might not support active FTP even - but it is a start).
Once you have found a good way of making your ftp sessions then I would suggest that you simple create two of them. If you want them to work at the same time - then put them in different threads and use lock statements to create mutex code blocks for control between the two if required. Alternatively, use delegates to communicate between the threads.
Good luck :)