>> Edit article
이름
제목
패스워드
#include <pthread.h> #include "TCPEchoServer.h" /* TCP echo server includes */ /* for POSIX threads */ void *ThreadMain (void *arg); /* Main program of a thread */ /* Structure of arguments to pass to client thread */ struct ThreadArgs { int clntSock; /* Socket descriptor for client */ }; int main (int argc, char *argv[]) { int servSock; /* Socket descriptor for server */ int clntSock; /* Socket descriptor for client */ unsigned short echoServPort; /* Server port */ pthread_t threadID; /* Thread ID from pthread_create() */ struct ThreadArgs *threadArgs; /* Pointer to argument structure for thread */ if (argc != 2) /* Test for correct number of arguments */ { fprintf (stderr, "Usage: %s <SERVER PORT>", argv[0]); exit (1); } echoServPort = atoi (argv[1]); /* First arg: local port */ servSock = CreateTCPServerSocket (echoServPort); for (;;) /* run forever */ { clntSock = AcceptTCPConnection (servSock); /* Create separate memory for client argument */ if ((threadArgs = (struct ThreadArgs *) malloc (sizeof (struct ThreadArgs))) == NULL) DieWithError ("malloc() failed"); threadArgs->clntSock = clntSock; /* Create client thread */ if (pthread_create(&threadID, NULL, ThreadMain, (void *) threadArgs) != 0) DieWithError ("pthread_create() failed"); printf ("with thread %ld", (long int) threadID); } /* NOT REACHED */ } void * ThreadMain (void *threadArgs) { int clntSock; /* Socket descriptor for client connection */ /* Guarantees that thread resources are deallocated upon return */ pthread_detach (pthread_self ()); /* Extract socket file descriptor from argument */ clntSock = ((struct ThreadArgs *) threadArgs)->clntSock; free (threadArgs); /* Deallocate memory for argument */ HandleTCPClient (clntSock); return (NULL); } 프로그램 루틴은 대충 이렇습니다. 안되는건 위에 보면 pthread_create와 pthread_detach함수를사용하는데 분명히 #include <pthread.h>를 명시해주었음에도 불구하고 컴파일과정에서 undefine reference to 'pthread_create' undefine reference to 'pthread_detach' 가 뜹니다. 이게어떻게된영문인지.. 이프로그램은 책에 있는 예제인데 echoserver로 요청이 오면 쓰레드를 생성하여 응답합니다 위에 AcceptTCPconnection()과 CreateTCPServerSocket() 과 HandleTCPclient()는 TCPEchoserver.h에서 불러들이는파일에 다 만들어져있으며 질문과는 관계가 없는걸로 생각되어 소스를 올리지 않았습니다. 답이 아니라도좋습니다. 생각나시는것있으면 자그마한글이라도^^--ps:즐거운 하루되세요
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved