![posix 소켓을 사용하여 웹 서버에 대한 테스트 케이스를 작성하는 방법은 무엇입니까? [폐쇄]](https://linux55.com/image/44159/posix%20%EC%86%8C%EC%BC%93%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%9B%B9%20%EC%84%9C%EB%B2%84%EC%97%90%20%EB%8C%80%ED%95%9C%20%ED%85%8C%EC%8A%A4%ED%8A%B8%20%EC%BC%80%EC%9D%B4%EC%8A%A4%EB%A5%BC%20%EC%9E%91%EC%84%B1%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
나는 프로그램을 실행하여 실험적으로 테스트하는 방법을 알고 있지만 이상적으로는 작성하면서 작성한 모든 함수를 테스트하고 싶습니다. 종종 함수 전체를 작성하기 전까지는 함수를 테스트할 수 없어서 문제가 무엇인지 파악하기가 어렵습니다.
이와 같은 기능에 대한 테스트 케이스를 작성할 수 있도록 소켓의 옵션, 플래그, 설정 등을 테스트하는 방법이 Posix에 있습니까?
이러한 기능을 테스트하는 가장 좋은 방법은 무엇입니까?
/**
* Creates a listening socket, sets it up with setsockopt, bind, and listen.
* @param port the port of the listening socket.
* @return the file descriptor of the listening socket.
*/
int SetUpListeningSocket(int port)
{
//Variables:
struct sockaddr_in server;
int s;
// setup socket address structure
memset(&server, 0, sizeof (server));
server.sin_family = AF_INET;
server.sin_port = htons(port);
server.sin_addr.s_addr = INADDR_ANY;
// create socket
s = socket(PF_INET, SOCK_STREAM, 0);
if (!s)
{
perror("socket");
exit(-1);
}
// set socket to immediately reuse port when the application closes
int opt = 1;
if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof (opt)) < 0)
{
perror("setsockopt");
exit(-1);
}
// call bind to associate the socket with our local address and
// port
if (bind(s, (const struct sockaddr *) &server, sizeof (server)) < 0)
{
perror("bind");
exit(-1);
}
// convert the socket to listen for incoming connections
if (listen(s, SOMAXCONN) < 0)
{
perror("listen");
exit(-1);
}
return s;
}