Pergunta

Pode alguém me aponte para um tutorial sobre a melhor maneira de abrir uma conexão do cliente ao servidor, lido em um arquivo binário e enviar o seu conteúdo de forma confiável através da conexão de rede? Mesmo melhor, há uma biblioteca de código aberto que já faz isso que eu poderia referir-se?

Foi útil?

Solução

Você deve olhar para serialização binária e enviá-lo através de um socket TCP.

Boa explicação sobre os diferentes tipos de serialização:

http://www.dotnetspider.com/resources /408-XML-serialization-Binary-serialization.aspx

Boa cartilha sobre TCP Cliente / Servidor em C #:

http://www.codeproject.com/KB/IP/tcpclientserver.aspx

Outras dicas

Este depende do que você quer dizer com rede - se você está copiando em uma rede local, você pode apenas usar as operações de cópia de arquivo dentro de System.IO. Se você está querendo enviar para servidores remotos eu fazer isso usando os serviços web. Eu matrizes de bytes compressa e enviá-los e descomprimir no lado remoto. A matriz de bytes é super fácil de escrever de volta para fluxos de disco usando.

Eu sei que algumas pessoas preferem base 64 cordas em vez do byte []. não tenho certeza se isso importa.

Que tal usar HTTP ou FTP? Eles foram tipo de feito para isso.

Alex

Dependendo de onde você está enviando o arquivo para, você pode querer dar uma olhada em WebClient.UploadFileAsync e WebClient.UploadFile .

Eu não usaria HTTP ou FTP, para um único arquivo é muito alto e muito para código, especialmente tendo um simples servidor TCP quase já feito para você em C #.

Sockets pode ser o melhor caminho se você está apenas ter que fazê-lo através da rede. Se você usar TCP, você começa a confiabilidade da comunicação, mas ter um impacto sobre a velocidade. Se você precisar de maior desempenho, você pode tentar usar UDP em seu lugar. Mas a desvantagem para UDP é que a entrega de pacotes e ordem não é garantida, assim que você precisa para escrever tudo o que encanamento si mesmo.

Se você está precisando de transferência de arquivos sobre a própria web (programaticamente, e se você não pode usar o FTP), então uma abordagem de serviço web através de MTOM pode atender às suas necessidades.

Se você está construindo em cima do Windows Server 2003 R2, Windows Vista ou Windows Server 2008 e fazer transferências de rede internos, outra opção é aproveitar o novo recurso Compactação Diferencial remota . Isto não só faz um trabalho realmente bom em compactar um arquivo para minimizar o tráfego de rede, mas também é usado diretamente pela replicação DFS. Desvantagem (como um desenvolvedor .NET), é uma COM + tecnologia.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top