소켓 프로그램에서 .. 클라이언트 정보..

mudori의 이미지

안녕하세요 초보입니다. 그냥 예제보고 연습하는중에 ..

서버에서 클라이언트 ip 주소를 변수에 넣고 싶은데 넣어지지가 않습니다.

예제에서는
printf("server: got connection from %s\n", inet_ntoa(their_addr.sin_addr));
위와 같이 프린트는 되는데 이것을 변수에 넣으려고 하면 않되네요.

최종호의 이미지

mudori wrote:
안녕하세요 초보입니다. 그냥 예제보고 연습하는중에 ..

서버에서 클라이언트 ip 주소를 변수에 넣고 싶은데 넣어지지가 않습니다.

예제에서는
printf("server: got connection from %s\n", inet_ntoa(their_addr.sin_addr));
위와 같이 프린트는 되는데 이것을 변수에 넣으려고 하면 않되네요.

문자열 넣는 코드를 안 보여주셔서 넣어지지가 않는다는 것이
어떤 것을 말씀하시는지 모르겠지만,

이전에 할당한 값이 바뀌는 증상이라면,
char *client_addr = inet_ntoa(their_addr.sin_addr);
로 포인터로 받지 마시고,
char client_addr[256];
배열에 strcpy, strncpy, snprintf 등을 이용해서 문자열을 복사하시던가
strdup 등을 이용해서 복사한 문자열에 대한 포인터를 가지고 계시면 될 듯 합니다.