[Richard stevens] UNP 2판 예제 컴파일 성공하신분 있나요?

Alpha의 이미지

FreeBSD 5.3 과 Redhat Linux 7.2 에서 Unix Network Programming 예제를 컴파일 해 봤지만 실패했습니다.

인텔용 솔라리스에서 컴파일해야 하나요?

아니면 다른 꽁수라도 ...

litdream의 이미지

음?
전 UNP1 만 해봤습니다만.. UNP2 가 안되나요?
에러 메세지라도 올려봐주시겠습니까?

"unp.h" 헤더화일만 제대로 있어도 잘되었던걸로 기억납니다만~

삽질의 대마왕...

violino의 이미지

전에 친구가 물어봐서 한번 봤는데요,
시스템콜의 프로토타입이 조금씩 다르더군요.
헤더파일의 위치도 체크해봐야 하고요.
헤더파일을 찾아서 거기서 쓰이는 시스템콜들의 이름을 검사해보시고 바꿔주세요.
특히, 대소문자가 조금씩 다른 것들이 많습니다.
아마도 BSD 계열이랑 SVR 계열의 차이때문인 것 같습니다.
(Linux 자체가 유닉스에 100% 호환되는 것도 아닙니다)
하지만, 솔라리스에서 컴파일한다고 모두 컴파일될지도 의문입니다.

Alpha의 이미지

-bash-2.05b$ ./configure
creating cache ./config.cache
checking host system type... i386-unknown-freebsd5.3
checking for gcc... gcc
checking whether the C compiler (gcc  ) works... yes
checking whether the C compiler (gcc  ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking for ranlib... ranlib
checking for pthread_create in -lpthread... yes
checking for t_open in -lnsl... no
checking for socket in -lsocket... no
checking for /usr/local/bind/lib/libbind.a... no
checking for /home/alpha/libbind.a... no
checking for /home/alpha/libresolv.a... no
checking for res_init in -lresolv... no
checking for t_open in -lxti... no
checking for /home/alpha/libunp.a... no
checking for /home/alpha/libunpxti.a... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/socket.h... yes
checking for sys/time.h... yes
checking for time.h... yes
checking for netinet/in.h... yes
checking for arpa/inet.h... yes
checking for errno.h... yes
checking for fcntl.h... yes
checking for netdb.h... yes
checking for signal.h... yes
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for sys/stat.h... yes
checking for sys/uio.h... yes
checking for unistd.h... yes
checking for sys/wait.h... yes
checking for sys/un.h... yes
checking for sys/select.h... yes
checking for poll.h... yes
checking for strings.h... yes
checking for sys/ioctl.h... yes
checking for sys/filio.h... yes
checking for sys/sockio.h... yes
checking for pthread.h... yes
checking for sys/sysctl.h... yes
checking for poll.h... (cached) yes
checking for xti.h... no
checking for xti_inet.h... no
checking for netconfig.h... yes
checking for netdir.h... no
checking for stropts.h... no
checking whether time.h and sys/time.h may both be included... yes
checking if uint8_t defined... yes
checking if int16_t defined... yes
checking if uint16_t defined... yes
checking if int32_t defined... yes
checking if uint32_t defined... yes
checking if size_t defined... yes
checking if ssize_t defined... yes
checking if socklen_t defined... yes
checking if sa_family_t defined... yes
checking if t_scalar_t defined... no
checking if t_uscalar_t defined... no
checking if sockaddr{} has sa_len member... yes
checking if msghdr{} has msg_control member... yes
checking for getaddrinfo function prototype in netdb.h... yes
checking for getnameinfo function prototype in netdb.h... yes
checking for gethostname function prototype in unistd.h... yes
checking for getrusage function prototype in sys/resource.h... yes
checking for hstrerror function prototype in netdb.h... yes
checking for if_nametoindex function prototype in net/if.h... yes
checking for inet_aton function prototype in arpa/inet.h... yes
checking for inet_pton function prototype in arpa/inet.h... yes
checking for isfdtype function prototype in sys/stat.h... no
checking for pselect function prototype in sys/select.h... yes
checking for snprintf function prototype in stdio.h... yes
checking for sockatmark function prototype in sys/socket.h... yes
checking for addrinfo{}... yes
checking for if_nameindex{}... yes
checking for sockaddr_dl{}... yes
checking for timespec{}... yes
checking for /dev/tcp... no
checking for /dev/xti/tcp... no
checking for /dev/streams/xtiso/tcp... no
checking for bzero... yes
checking for getaddrinfo... yes
checking for gethostname... yes
checking for gethostbyname2... yes
checking for gethostbyname_r... no
checking for getnameinfo... yes
checking for hstrerror... yes
checking for if_nametoindex... yes
checking for inet_aton... yes
checking for inet_pton... yes
checking for isfdtype... no
checking for poll... yes
checking for pselect... yes
checking for snprintf... yes
checking for sockatmark... yes
checking for vsnprintf... yes
checking for IPv4 support... yes
checking for IPv6 support... yes
checking for Unix domain sockets... yes
checking for multicast support... yes
checking for -I/home/alpha/doc/unp2ev1/src/include... no
updating cache ./config.cache
creating ./config.status
creating Makefile
creating Make.defines
creating config.h



-bash-2.05b$ cd lib
-bash-2.05b$ make
gcc -g -O2 -D_REENTRANT -Wall -c connect_nonb.c
gcc -g -O2 -D_REENTRANT -Wall -c connect_timeo.c
gcc -g -O2 -D_REENTRANT -Wall -c daemon_inetd.c
gcc -g -O2 -D_REENTRANT -Wall -c daemon_init.c
gcc -g -O2 -D_REENTRANT -Wall -c dg_cli.c
gcc -g -O2 -D_REENTRANT -Wall -c dg_echo.c
gcc -g -O2 -D_REENTRANT -Wall -c error.c
gcc -g -O2 -D_REENTRANT -Wall -c get_ifi_info.c
gcc -g -O2 -D_REENTRANT -Wall -c gf_time.c
gf_time.c: In function `gf_time':
gf_time.c:14: warning: passing arg 1 of `ctime' from incompatible pointer type
gcc -g -O2 -D_REENTRANT -Wall -c host_serv.c
gcc -g -O2 -D_REENTRANT -Wall -c isfdtype.c
gcc -g -O2 -D_REENTRANT -Wall -c mcast_leave.c
mcast_leave.c: In function `mcast_leave':
mcast_leave.c:26: error: `IPV6_DROP_MEMBERSHIP' undeclared (first use in this function)
mcast_leave.c:26: error: (Each undeclared identifier is reported only once
mcast_leave.c:26: error: for each function it appears in.)
*** Error code 1



-bash-2.05b$ cd libgai/
-bash-2.05b$ make
gcc -g -O2 -D_REENTRANT -Wall -c getaddrinfo.c
getaddrinfo.c: In function `getaddrinfo':
getaddrinfo.c:58: error: `EAI_ADDRFAMILY' undeclared (first use in this function)
getaddrinfo.c:58: error: (Each undeclared identifier is reported only once
getaddrinfo.c:58: error: for each function it appears in.)
getaddrinfo.c:116: error: `EAI_NODATA' undeclared (first use in this function)
*** Error code 1



-bash-2.05b$ cd libxti/
-bash-2.05b$ make
gcc -g -O2 -D_REENTRANT -Wall -c wrapxti.c
In file included from wrapxti.c:5:
unpxti.h:7:17: xti.h: No such file or directory
unpxti.h:22:21: stropts.h: No such file or directory
In file included from wrapxti.c:5:
unpxti.h:93: warning: "struct strbuf" declared inside parameter list
unpxti.h:93: warning: its scope is only this definition or declaration, which is probably not what you want
unpxti.h:94: warning: "struct strbuf" declared inside parameter list
unpxti.h:102: warning: "struct t_call" declared inside parameter list
unpxti.h:103: warning: "struct t_bind" declared inside parameter list
unpxti.h:105: warning: "struct t_call" declared inside parameter list
unpxti.h:107: warning: "struct t_bind" declared inside parameter list
unpxti.h:109: warning: "struct t_call" declared inside parameter list
unpxti.h:111: warning: "struct t_info" declared inside parameter list
unpxti.h:112: warning: "struct t_optmgmt" declared inside parameter list
unpxti.h:114: warning: "struct t_discon" declared inside parameter list
unpxti.h:116: warning: "struct t_unitdata" declared inside parameter list
unpxti.h:117: warning: "struct t_uderr" declared inside parameter list
unpxti.h:120: warning: "struct t_unitdata" declared inside parameter list
unpxti.h:122: warning: "struct netbuf" declared inside parameter list
unpxti.h:126: warning: "struct netbuf" declared inside parameter list
unpxti.h:127: warning: "struct netbuf" declared inside parameter list
unpxti.h:131: warning: "struct netbuf" declared inside parameter list
unpxti.h:135: warning: "struct netbuf" declared inside parameter list
unpxti.h:136: warning: "struct netbuf" declared inside parameter list
unpxti.h:140: warning: "struct t_opthdr" declared inside parameter list
unpxti.h:141: warning: "struct t_opthdr" declared inside parameter list
unpxti.h:142: warning: "struct t_opthdr" declared inside parameter list
unpxti.h:143: warning: "struct t_opthdr" declared inside parameter list
unpxti.h:146: warning: "struct t_opthdr" declared inside parameter list
unpxti.h:147: warning: "struct t_opthdr" declared inside parameter list
unpxti.h:148: warning: "struct t_opthdr" declared inside parameter list
unpxti.h:149: warning: "struct t_opthdr" declared inside parameter list
wrapxti.c: In function `err_xti_doit':
wrapxti.c:55: warning: implicit declaration of function `t_strerror'
wrapxti.c:55: error: `t_errno' undeclared (first use in this function)
wrapxti.c:55: error: (Each undeclared identifier is reported only once
wrapxti.c:55: error: for each function it appears in.)
wrapxti.c:55: warning: format argument is not a pointer (arg 4)
wrapxti.c:55: warning: format argument is not a pointer (arg 4)
wrapxti.c:57: error: `TSYSERR' undeclared (first use in this function)
wrapxti.c: At top level:
wrapxti.c:73: warning: "struct strbuf" declared inside parameter list
wrapxti.c:74: error: conflicting types for 'Getmsg'
unpxti.h:93: error: previous declaration of 'Getmsg' was here
wrapxti.c:74: error: conflicting types for 'Getmsg'
unpxti.h:93: error: previous declaration of 'Getmsg' was here
wrapxti.c: In function `Getmsg':
wrapxti.c:77: warning: implicit declaration of function `getmsg'
wrapxti.c: At top level:
wrapxti.c:83: warning: "struct strbuf" declared inside parameter list
wrapxti.c:84: error: conflicting types for 'Putmsg'
unpxti.h:94: error: previous declaration of 'Putmsg' was here
wrapxti.c:84: error: conflicting types for 'Putmsg'
unpxti.h:94: error: previous declaration of 'Putmsg' was here
wrapxti.c: In function `Putmsg':
wrapxti.c:85: warning: implicit declaration of function `putmsg'
wrapxti.c: At top level:
wrapxti.c:114: warning: "struct t_call" declared inside parameter list
wrapxti.c:115: error: conflicting types for 'T_accept'
unpxti.h:102: error: previous declaration of 'T_accept' was here
wrapxti.c:115: error: conflicting types for 'T_accept'
unpxti.h:102: error: previous declaration of 'T_accept' was here
wrapxti.c: In function `T_accept':
wrapxti.c:118: warning: implicit declaration of function `t_accept'
wrapxti.c: In function `T_alloc':
wrapxti.c:129: warning: implicit declaration of function `t_alloc'

wrapxti.c:129: warning: assignment makes pointer from integer without a cast
wrapxti.c: At top level:
wrapxti.c:135: warning: "struct t_bind" declared inside parameter list
wrapxti.c:136: error: conflicting types for 'T_bind'
unpxti.h:103: error: previous declaration of 'T_bind' was here
wrapxti.c:136: error: conflicting types for 'T_bind'
unpxti.h:103: error: previous declaration of 'T_bind' was here
wrapxti.c: In function `T_bind':
wrapxti.c:137: warning: implicit declaration of function `t_bind'
wrapxti.c: In function `T_close':
wrapxti.c:144: warning: implicit declaration of function `t_close'
wrapxti.c: At top level:
wrapxti.c:149: warning: "struct t_call" declared inside parameter list
wrapxti.c:150: error: conflicting types for 'T_connect'
unpxti.h:105: error: previous declaration of 'T_connect' was here
wrapxti.c:150: error: conflicting types for 'T_connect'
unpxti.h:105: error: previous declaration of 'T_connect' was here
wrapxti.c: In function `T_connect':
wrapxti.c:151: warning: implicit declaration of function `t_connect'
wrapxti.c: In function `T_free':
wrapxti.c:158: warning: implicit declaration of function `t_free'
wrapxti.c: At top level:
wrapxti.c:163: warning: "struct t_bind" declared inside parameter list
wrapxti.c:164: error: conflicting types for 'T_getprotaddr'
unpxti.h:107: error: previous declaration of 'T_getprotaddr' was here
wrapxti.c:164: error: conflicting types for 'T_getprotaddr'
unpxti.h:107: error: previous declaration of 'T_getprotaddr' was here
wrapxti.c: In function `T_getprotaddr':
wrapxti.c:165: warning: implicit declaration of function `t_getprotaddr'
wrapxti.c: In function `T_getstate':
wrapxti.c:174: warning: implicit declaration of function `t_getstate'
wrapxti.c: At top level:
wrapxti.c:181: warning: "struct t_call" declared inside parameter list
wrapxti.c:182: error: conflicting types for 'T_listen'
unpxti.h:109: error: previous declaration of 'T_listen' was here
wrapxti.c:182: error: conflicting types for 'T_listen'
unpxti.h:109: error: previous declaration of 'T_listen' was here
wrapxti.c: In function `T_listen':
wrapxti.c:183: warning: implicit declaration of function `t_listen'
wrapxti.c: In function `T_look':
wrapxti.c:192: warning: implicit declaration of function `t_look'
wrapxti.c: At top level:
wrapxti.c:199: warning: "struct t_info" declared inside parameter list
wrapxti.c:200: error: conflicting types for 'T_open'
unpxti.h:111: error: previous declaration of 'T_open' was here
wrapxti.c:200: error: conflicting types for 'T_open'
unpxti.h:111: error: previous declaration of 'T_open' was here
wrapxti.c: In function `T_open':
wrapxti.c:203: warning: implicit declaration of function `t_open'
wrapxti.c: At top level:
wrapxti.c:210: warning: "struct t_optmgmt" declared inside parameter list
wrapxti.c:211: error: conflicting types for 'T_optmgmt'
unpxti.h:112: error: previous declaration of 'T_optmgmt' was here
wrapxti.c:211: error: conflicting types for 'T_optmgmt'
unpxti.h:112: error: previous declaration of 'T_optmgmt' was here
wrapxti.c: In function `T_optmgmt':
wrapxti.c:212: warning: implicit declaration of function `t_optmgmt'
wrapxti.c: In function `T_rcv':
wrapxti.c:221: warning: implicit declaration of function `t_rcv'
wrapxti.c: At top level:
wrapxti.c:228: warning: "struct t_discon" declared inside parameter list
wrapxti.c:229: error: conflicting types for 'T_rcvdis'
unpxti.h:114: error: previous declaration of 'T_rcvdis' was here
wrapxti.c:229: error: conflicting types for 'T_rcvdis'
unpxti.h:114: error: previous declaration of 'T_rcvdis' was here
wrapxti.c: In function `T_rcvdis':
wrapxti.c:230: warning: implicit declaration of function `t_rcvdis'
wrapxti.c: In function `T_rcvrel':
wrapxti.c:237: warning: implicit declaration of function `t_rcvrel'
wrapxti.c: At top level:
wrapxti.c:242: warning: "struct t_unitdata" declared inside parameter list
wrapxti.c:243: error: conflicting types for 'T_rcvudata'
unpxti.h:116: error: previous declaration of 'T_rcvudata' was here
wrapxti.c:243: error: conflicting types for 'T_rcvudata'
unpxti.h:116: error: previous declaration of 'T_rcvudata' was here
wrapxti.c: In function `T_rcvudata':
wrapxti.c:244: warning: implicit declaration of function `t_rcvudata'
wrapxti.c: At top level:
wrapxti.c:249: warning: "struct t_uderr" declared inside parameter list
wrapxti.c:250: error: conflicting types for 'T_rcvuderr'
unpxti.h:117: error: previous declaration of 'T_rcvuderr' was here
wrapxti.c:250: error: conflicting types for 'T_rcvuderr'
unpxti.h:117: error: previous declaration of 'T_rcvuderr' was here
wrapxti.c: In function `T_rcvuderr':
wrapxti.c:251: warning: implicit declaration of function `t_rcvuderr'
wrapxti.c: In function `T_snd':
wrapxti.c:260: warning: implicit declaration of function `t_snd'
wrapxti.c: In function `T_sndrel':
wrapxti.c:267: warning: implicit declaration of function `t_sndrel'
wrapxti.c: At top level:
wrapxti.c:272: warning: "struct t_unitdata" declared inside parameter list
wrapxti.c:273: error: conflicting types for 'T_sndudata'
unpxti.h:120: error: previous declaration of 'T_sndudata' was here
wrapxti.c:273: error: conflicting types for 'T_sndudata'
unpxti.h:120: error: previous declaration of 'T_sndudata' was here
wrapxti.c: In function `T_sndudata':
wrapxti.c:274: warning: implicit declaration of function `t_sndudata'
wrapxti.c: At top level:
wrapxti.c:280: warning: "struct netbuf" declared inside parameter list
wrapxti.c: In function `Taddr2uaddr':
wrapxti.c:284: warning: implicit declaration of function `taddr2uaddr'
wrapxti.c:284: warning: assignment makes pointer from integer without a cast
wrapxti.c: At top level:
wrapxti.c:310: warning: "struct netbuf" declared inside parameter list
wrapxti.c:311: error: conflicting types for 'Xti_ntop'
unpxti.h:135: error: previous declaration of 'Xti_ntop' was here
wrapxti.c:311: error: conflicting types for 'Xti_ntop'
unpxti.h:135: error: previous declaration of 'Xti_ntop' was here
wrapxti.c: In function `Xti_ntop':
wrapxti.c:314: warning: passing arg 1 of `xti_ntop' from incompatible pointer type
wrapxti.c: At top level:
wrapxti.c:320: warning: "struct netbuf" declared inside parameter list
wrapxti.c:321: error: conflicting types for 'Xti_ntop_host'
unpxti.h:136: error: previous declaration of 'Xti_ntop_host' was here
wrapxti.c:321: error: conflicting types for 'Xti_ntop_host'
unpxti.h:136: error: previous declaration of 'Xti_ntop_host' was here
wrapxti.c: In function `Xti_ntop_host':
wrapxti.c:324: warning: passing arg 1 of `xti_ntop_host' from incompatible pointer type
*** Error code 1



-bash-2.05b$ cd intro
-bash-2.05b$ make
gcc -g -O2 -D_REENTRANT -Wall -c daytimetcpcli.c
gcc -g -O2 -D_REENTRANT -Wall -o daytimetcpcli daytimetcpcli.o ../libunp.a -lpthread
daytimetcpcli.o(.text+0x24): In function `main':
/home/alpha/UNP/unpv12e/intro/daytimetcpcli.c:11: undefined reference to `err_quit'
daytimetcpcli.o(.text+0xde):/home/alpha/UNP/unpv12e/intro/daytimetcpcli.c:28: undefined reference to `err_sys'
daytimetcpcli.o(.text+0x10e):/home/alpha/UNP/unpv12e/intro/daytimetcpcli.c:31: undefined reference to `err_sys'
daytimetcpcli.o(.text+0x120):/home/alpha/UNP/unpv12e/intro/daytimetcpcli.c:14: undefined reference to `err_sys'
daytimetcpcli.o(.text+0x138):/home/alpha/UNP/unpv12e/intro/daytimetcpcli.c:20: undefined reference to `err_quit'
daytimetcpcli.o(.text+0x15d):/home/alpha/UNP/unpv12e/intro/daytimetcpcli.c:23: undefined reference to `err_sys'
*** Error code 1






litdream의 이미지

일단 첫번째 lib 에 관한것은 다음을 참조하십시오.

http://www.kr.freebsd.org/ml/questions/2001/01/msg00082.shtml

삽질의 대마왕...

Alpha의 이미지

위 링크에서 설명한 것처럼

/usr/prots/distfiles 에

make-3.80.tar.bz2
unpv12e.tar.gz
unpv22e.tar.gz

집어 넣고

/usr/prots/net/libunp
/usr/prots/net/libunpipc

에서 make 한방 때려주니까 다 잘돌아가네요.

전에 웹 뒤적거리면서 프비사이트에서도 찾아 봤지만 못 찾겠던에 ...

검색능력이 대단하시네요.

litdream의 노고에 감사드립니다. ^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.