리눅스 멀티스레드 파일 공유 프로그램 - 8 본문
간단한 txt파일을 전송해 보았다.
void *clientHandler(void *newsocket)
{
int new_socket = *((int *)newsocket);
char buffer[BUFFER_SIZE];
string str_buffer;
int valread = recv(new_socket, buffer, BUFFER_SIZE, 0);
str_buffer = string(buffer, valread);
ifstream input_file("/home/sj/share_file_project/root_file_dir/secret.txt", ios::in | ios::binary);
if(str_buffer == "1234")
{
while(!input_file.eof()){
input_file.read(buffer, BUFFER_SIZE);
cout << buffer << endl;
send(new_socket, buffer, input_file.gcount(), 0);
memset(buffer, 0, BUFFER_SIZE);
}
input_file.close();
}
else
{
str_buffer = "Failed";
send(new_socket, str_buffer.c_str(), str_buffer.length(), 0);
}
// 소켓 종료
close(new_socket);
}
서버의 스레드 함수이다.
ifstream 클래스를 이용해 파일을 읽어드리고
클라이언트로 보낸다.
gcount는 데이터의 크기를 의미한다.
ofstream output_file("received_file.txt", ios::out | ios::binary);
int valread = 0;
while((valread = read(sock, buffer, BUFFER_SIZE)) > 0)
{
output_file.write(buffer, valread);
memset(buffer, 0 ,BUFFER_SIZE);
}
output_file.close();
클라이언트의 파일을 받는 부분이다.
received_file이라는 새로운 파일을 만들어 내용을 넣어줄 것이다.
read로 읽고 valread로 길이를 반환받아 사용해 준다.
파일이 만들어진 모습이다.
'개발 > 개인공부' 카테고리의 다른 글
리눅스 멀티스레드 파일 공유 프로그램 - 10(완) (0) | 2024.06.16 |
---|---|
리눅스 멀티스레드 파일 공유 프로그램 - 9 (1) | 2024.06.14 |
리눅스 멀티스레드 파일 공유 프로그램 - 7 (0) | 2024.06.11 |
리눅스 멀티스레드 파일 공유 프로그램 - 6 (0) | 2024.06.10 |
리눅스 멀티스레드 파일 공유 프로그램 - 5 (0) | 2024.06.08 |
Comments