=================================================================== RCS file: /home/cvs/OpenXM/src/ox_toolkit/mysocket.c,v retrieving revision 1.1 retrieving revision 1.4 diff -u -p -r1.1 -r1.4 --- OpenXM/src/ox_toolkit/mysocket.c 1999/12/09 22:44:55 1.1 +++ OpenXM/src/ox_toolkit/mysocket.c 2000/10/10 05:23:20 1.4 @@ -1,10 +1,14 @@ /* -*- mode: C; coding: euc-japan -*- */ -/* $OpenXM$ */ +/* $OpenXM: OpenXM/src/ox_toolkit/mysocket.c,v 1.3 2000/01/13 07:57:09 ohara Exp $ */ /* -setsockopt()してオプションを設定後, -socket, bind -するとローカルポートが割り当てられる。 -その後, getsockname によってポート番号が求まる. +Q: How to get a local port number? +A: You do setsockopt() to set options and do socket(), bind(). +An OS set a local port for you. +In order to get the local port, you need to do getsockname(). +(See [1] pp. 91, pp. 187 for detail) + +Reference +[1] W. Richard Stevens, "UNIX Network Programming", 2nd ed. Vol. 1 */ #include @@ -12,6 +16,7 @@ socket, bind #include #include #include +#include #include #include #include @@ -37,8 +42,7 @@ static int getsocket(struct sockaddr_in *mp, char *hos int mysocketAccept(int s_waiting) { - int val = accept(s_waiting, NULL, NULL); - return val; + return accept(s_waiting, NULL, NULL); } int mysocketListen(char *hostname, short *portp) @@ -94,13 +98,13 @@ int mypipe(char *program, int fd1, int fd2) fprintf(stderr, "socketpair: fail! errno = %d\n", errno); } if (fork() == 0) { - /* 子プロセス */ + /* child process */ close(sockfd[0]); dup2(sockfd[1], fd1); dup2(sockfd[1], fd2); execl(program, program, NULL); } - /* 親プロセス */ + /* parent process */ close(sockfd[1]); return sockfd[0]; }