본문 바로가기
Study/php

소켓통신하기 (CLIENT)

by Answer Choi 2016. 7. 21.
반응형


웹에서 디바이스로 원격 제어를 해야 할 경우가 있습니다.


그럴경우 아래 그림과 같이 제어를 하게 됩니다.


예를 들어 웹서버에서 버튼을 눌러 제어를 하게되면, 


PHP를 통해 미들웨어쪽과 소켓통신을 하게 됩니다.


그리고 미들웨어는 디바이스로 명령을 전달하고 웹서버에게 그 응답을 전달해 줍니다.


PHP CODE


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
$service_port = '4000';
$address = '192.168.0.101';
print 'socket_create!! '
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket == false) {
    print 'socket_create() failed: reason: ' .socket_strerror(socket_last_error()) . '\n';
else {
    print 'OK.\n';
}
print 'socket_connect!! ';
$result = socket_connect($socket$address , $service_port);
if ($result == false) {
    print 'socket_connect() failed.\nReason: ($result) ' .socket_strerror(socket_last_error($socket)) . '\n';
else {
    print 'OK.\n';
}
 
$in = 'up ';
 
 
socket_write($socket$in, strlen($in));
print 'OK.\n';
 
print 'Reading response:\n\n';
while ($out = socket_read($socket2048)) {
    print $out;
}
 
print 'Closing socket...';
socket_close($socket);
print 'OK.\n\n';
?>
cs


위 예제코드는 소켓서버로 'up'이라는 글자를 보내고 응답을 받는 예제입니다.


Line 2~3 : 소켓 서버에 대한 정보입니다.


Line 5~10 : 소켓을 만듭니다. 실패하게 되면 false를 반환합니다.


resource socket_create ( int $domain , int $type , int $protocol )


첫번째 파라메터인 domain은 ipv4, ipv6등 종류를 선택하는 것입니다.



두번째 파라메터인 type은 통신 타입을 선택합니다.



마지막 파라메터인 protocol은 TCP/UDP등 통신 프로토콜을 선택합니다.



Line 12~17 : 소켓을 서버에 접속합니다. 실패하면 역시 false를 반환합니다.


bool socket_connect ( resource $socket , string $address [, int $port = 0 ] )



첫번째 파라메터는 위에서 만들어준 소켓을 넣습니다.


두번째 파라메터는 서버의 주소


세번재 파라메터는 서버의 포트번호 입니다.


Line 19~23 : 임의의 데이터를 소켓 서버에 보냈습니다.


Line 26~28 : 서버의 응답을 저장합니다.


Line 30~32 : 소켓을 종료합니다.


서버는 임의로 받은 데이터를 그대로 보내주도록 코딩하였습니다.


서버의 로그 기록입니다.


클라이언트로 부터 받은 데이터가 로그에 기록됩니다.



반응형

'Study > php' 카테고리의 다른 글

php7 에서 php5.6 사용하기  (0) 2016.08.25
php7 에서 short tag 사용하기  (0) 2016.08.24
SMTP 메일보내기  (0) 2016.07.20
PHP ] 간단한 PHP CHART  (0) 2015.10.14
PHP TIP] 편리한 변수의 사용  (0) 2015.10.13

인기글