[완료]소켓프로그래밍에서 소켓을 여러개 쓰려고 하는데요
UDP로 IPC를 구현하려고 하는데요
하나의 프로세스가 두개의 프로세스와 통신을 하기 위해 소켓을 두개 생성하려고 합니다.
그런데 A, B프로세스간에 통신하는 소켓을 생성하고 통신하는건 문제가 없는데요
이후에 A, C 프로세스간에 통신하려고 소켓을 또 생성하려니까 문제가 발생하네요
근데 이건 뭐 리턴도 없이 그냥 종료가 되버려서 참 난감하네요;;
대략 이런식으로 소켓을 생성하는데요
socketInfo->serverSockfd = socket(AF_UNIX, SOCK_DGRAM, 0);
if (socketInfo->serverSockfd == -1)
{
perror("server socket ERROR!!:");
exit(0);
}
socket(AF_UNIX, SOCK_DGRAM, 0)
여기를 돌다가 그냥 죽어버리네요
검색해 보니까 소켓을 여러개 생성하면 맨 마지막 인자인 프로토콜을 0이 아닌 다른걸로 해야 한다고 나오는데
========================================================================================
출처: http://linux.die.net/man/2/socket
Normally only a single protocol exists to support a particular socket type within a given protocol family, in which case protocol can be specified as 0. However, it is possible that many protocols may exist, in which case a particular protocol must be specified in this manner. The protocol number to use is specific to the 'communication domain' in which communication is to take place. see protocols(5). See getprotoent(3) on how to map protocol name strings to protocol numbers.
========================================================================================
뭐 어떻게 해야할지를 모르겠네요ㅠ
마지막 인자를 어떻게 설정해 주어야 할까요??
마지막 인자는 그냥 0을 쓰면 됩니다. 그보다..
마지막 인자는 그냥 0을 쓰면 됩니다.
그보다.. socket()이 실패했을 때, errno의 값이 궁금합니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
아 이 문제가 아니었습니다
소켓문제가 아니라...동적할당을 잘못해서 생긴 결과였습니다...
errno를 내지 않아서 이상하다고 생각했는데
나중에 찾아보니까 동적할당을 안했더군요
근데 정말 신기한건 그전에는 동적할당을 안했는데 잘 돌아갔거든요;;;;;
그래서 꿈에도 그 문제인줄은 몰랐는데;; 희안하더군요ㅠ
댓글 달기