Salut,
Je ne comprend pas très bien ce que tu veux faire ? Tu veux que ton client envoi des données au serveur de lui même, ou tu veux que le serveur récupère automatiquement des données chez le client.
Parce que la deuxième solution me parait très complexe à la limite de l'impossible.
Sinon si c'est juste un envoi du client le plus simple c'est d'utiliser WebClient, comme ça tu ne te prend pas la tête à créer des sockets.
Tu auras juste à indiquer l'adresse du serveur et l'emplacement du fichier que tu veux envoyer.
ex :
WebClient WC = new WebClient();
string arg1 = "adresse_du_serv/nom_du_fichier.ext";//adresse+nom que le fichier aura sur ton serveur
string arg2 = "chemin+nom_du_fichier_local";//emplacement du fichier chez le client
WC.UploadFile(arg1, arg2);//configure l'envoi
WC.dispose();//envoi et libère les ressources
Donc ensuite si le fichier que tu envoi au serveur c'est toujours le même (même nom et même emplacement) tu peut faire l'envoi automatiquement en fixant la variable arg2 ou sinon tu fait entrer le chemin par le client avec un truc du style :
string arg2 = textboxFichier.text;
ou
string arg2 = Console.ReadLine();//Si c'est en mode console
voila, voila bon courage

.