I think I understand what you are trying to accomplish and unfortunately it is not possible in the way that you're describing. When doing communication across a network connection, data is sent in bytes which need to be put back together on the other side. Using serialization, you can send actual objects across the stream which can be put back together on the other end.
If you are primarily sending text files across the network and you want to preserve the file name, you might consider defining a simple class:
public class TransportFileInfo() {
string FileName { get; set; }
string FileContents { get; set; }
}
In your listener thread, you would receive the bytes corresponding to a serialized TransportFileInfo and then deserialize that back to it's object form. At that point you would have access to FileName and FileContents to direct your output stream appropriately.
If you do some googling for C# binary serialization I'm sure you will find information that will be useful to you.