다음 코드 예제는 소켓을 만들고 연결한 다음 파일을 원격 호스트로 보냅니다. 파일 “test.txt”는 로컬 컴퓨터의 루트 디렉토리에 있습니다. 안녕하세요, 여기에 당신의 위대한 작품에 대한 감사. Btw, 소켓이 단일 스트림에서 여러 파일을 쓸 수 있는지 궁금해? 마찬가지로 파일 이름 뒤에 파일 확장자 다음에 파일 내용 (어떤 파일이 될 수 있습니까)? 모든 피드백은 대단히 감사하겠습니다. XD 이것은 당신이 텔넷을 통해서도 파일 전송을 허용 할 수 있습니다. 보낼 파일의 경로와 이름을 포함하는 문자열입니다. 이 매개 변수는 null일 수 있습니다. 그러나 저는 기쁨씨의 모범을 취하여 예제를 아우르는 프로젝트 대신 간단한 도우미 클래스로 완전히 다시 작성했습니다. 나는 또한 그것을 정제했다, 그래서 당신은 삭제 된 파일을 볼 수 없습니다, 그것은 바탕 화면에 떨어졌다 경우에도. 이 프로젝트에는 몇 가지 도우미 클래스도 포함되어 있습니다. 하나는 CopyFile 도우미 클래스입니다. 파일을 전송하고 진행률을 표시하는 데 관련된 모든 무거운 작업을 수행합니다. hy 모든 오늘 나는 기본적인 파일 전송 콘솔 응용 프로그램을 만드는 방법을 보여줍니다.

이것은 단지 수신하고 c #.net에서 파일을 보내는 것이 얼마나 쉬운지 보여주기 위한 것입니다. 이 프로젝트는 무겁게 댓글을 달았습니다. 내 의도는 이해 관계자가 예제 프로젝트를 통해 읽게하여이 퍼즐의 다른 부분을 사용하는 방법에 대한 핸들을 얻을 수 있도록하는 것이었습니다. RFS(RemoteFileSystem)는 네트워크 자체를 통해 데이터를 전송하지 않으며 대리자를 통해 선택한 네트워크 통신 라이브러리에 각 요청 또는 응답을 전달합니다. 예제 프로젝트에서 RFS 서버를 초기화하는 데 필요한 코드는 매우 간단합니다. 그리고 지금 전체 클래스 (나는 나중에 tho에 c # 에서 파일 전송을 돕기 위해 DLL을 만들 것입니다) 나는 작성하고 2012 년 CodeProject에 여기에 TcpComm 라이브러리를 게시했다. 수년에 걸쳐, 사람들은 폴더를 전송하는 방법을 나에게 물었다. 라이브러리는 클라이언트 와 서버 클래스 모두에서 GetFile() 및 SendFile() 함수를 제공합니다…

또한 들어오는 파일을 수신하기 위해 클라이언트와 서버에서 사용하는 폴더를 변경하는 방법도 제공했습니다. 그래서 질문을 받았을 때 대부분의 경우 사람들에게 응용 프로그램 자체에 폴더 전송 기능을 빌드해야 한다고 말합니다. 나는 도구를 제공했다고 말할 것이다, 나머지는 당신에게 달려 있다고. 이제 메시지를 얻으면 대상 디렉터리에서 파일을 작성하기 위해 다른 스레드가 만들어집니다. SendFile은 연결 또는 수락 메서드에 지정된 원격 호스트로 파일을 동기적으로 보냅니다. SendFile은 연결 지향 및 연결 없는 프로토콜 모두에 사용할 수 있습니다. 이 과정에서 우리는 마지막 시간과 서버와 같은 클라이언트를해야합니다. 한 포트를 수신하는 tcpListener 개체가 있을 것이고 메시지가 도착하면 파일을 만들고 해당 파일에 대한 잠금을 OS에 요청하고 해당 파일에 메시지 내용을 작성합니다. 또 다른 변수 ID 오프셋 포인트와 다음 하나는 파일 쓰기에 대 한 블록 크기입니다. 연결된 소켓에 파일 및 선택적 데이터를 동기적으로 보냅니다.

이 오버로드는 파일 파일을 연결 된 소켓에 파일을 보냅니다. 플래그 매개 변수는 기본값UseDefaultWorkerThread (0)이며 사전 버퍼 및 사후 버퍼 매개 변수는 null로 기본값입니다. fileName이 로컬 디렉터리에 있는 경우 파일 이름만으로 식별할 수 있습니다. 그렇지 않으면 파일의 전체 경로와 이름을 지정해야 합니다. 와일드카드(“.. myfile.txt”) 및 UNC 공유 이름(“\\”myfile.txt”)이 지원됩니다. 파일을 찾을 수 없는 경우 예외 FileNotFoundExceptionthrowthrow throw 됩니다. 네트워크 스트림을 사용 하 여 우리는 바이트 형태로 메시지를 얻었다. 그리고 우리는 fileand에 쓴 후 루프에서 나온 후이 예제 프로젝트에 대한 TcpComm 라이브러리를 사용했음에도 불구하고 당신은 그것에 잠기지 않습니다.