[김성민]님이 남기신 글:
>안녕하세요..
>
>아래글은 알려주신대로 좀더 연구좀 해보겠습니다.
>아래 소스를 리눅스상에서 실행시켜놓고,
>다른 리눅스나 같은 리눅스 상에서
>>> telnet 111.222.333.12 8888
>
>접속하고.
>
>>> abc 엔터
>>> bbb 엔터
>
>이런식으로 명령을 보내보면 이상없는데,
>
>윈도우컴 명령프롬프트상에서
해보면,
>
>>> abc 엔터가 아니고
>>> a 한글자만 쳐도 전송되버리는데
>
>php 소스상에서 quit 이라는 명령에 대해 어떤 동작을 하게 되어
있다면,
>윈도우컴 명령프롬프트상에서,
>
>>> q 한글자만 타이핑해도 엔터친것처럼 처리되어
버리더라고요..
>
>이건 뭐가 잘못된건지 알 수 있을까요..
========================================
윈도우는 잘 모르겠네요
다만 socket 옵션 중에서 뭔가가 있지 않을까 합니다만.
http://kr.php.net/manual/en/function.socket-get-option.php
에 사용가능한 옵션이 있습니다.
그외에
client 에서 socket_write() 할 때
$msg = 'foobar'."\r\n";
이런식으로 라인끝을 의미한 특수문자를 강제로 추가하고
server 에서도 socket_read() 할 때 특수문자인
"\r\n" 이 나올때까지 계속 read() 해서 구현해 보는게
좋을듯 합니다.
어렵운 알고리즘은 아니지만 처음 socket 프로그래밍 하신다면
꽤 고전할 것 같네요.
|