www-thermferm/socketmessage.php

Thu, 10 Jul 2014 11:46:27 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Thu, 10 Jul 2014 11:46:27 +0200
changeset 98
6e7e69f3493a
permissions
-rw-r--r--

Start over again with web pages

98
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 <?php
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2 /*****************************************************************************
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3 * Copyright (C) 2014
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 *
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5 * Michiel Broek <mbroek at mbse dot eu>
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6 *
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7 * This file is part of ThermFerm
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8 *
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9 * This is free software; you can redistribute it and/or modify it
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10 * under the terms of the GNU General Public License as published by the
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11 * Free Software Foundation; either version 2, or (at your option) any
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
12 * later version.
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
13 *
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
14 * ThermFerm is distributed in the hope that it will be useful, but
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
15 * WITHOUT ANY WARRANTY; without even the implied warranty of
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
17 * General Public License for more details.
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
18 *
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
20 * along with ThermFerm; see the file COPYING. If not, write to the Free
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
21 * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
22 *****************************************************************************/
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
23
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
24 function open_socket()
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
25 {
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
26 $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
27
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
28 if (!($sock === false)) {
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
29 if (socket_connect($sock, "localhost", 6554)) {
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
30 socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 15, 'usec' => 0));
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
31 } else {
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
32 socket_close($sock);
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
33 }
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
34 }
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
35 return $sock;
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
36 }
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
37
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
38
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
39
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
40 function startsWith($haystack, $needle)
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
41 {
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
42 return !strncmp($haystack, $needle, strlen($needle));
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
43 }
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
44
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
45
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
46
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
47 error_reporting(E_ALL ^ E_WARNING);
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
48 if(isset($_POST['messageType'])){
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
49 $messageType = $_POST['messageType'];
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
50 } else {
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
51 die("messageType not set");
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
52 }
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
53
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
54
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
55
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
56 if(isset($_POST['message'])){
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
57 // message with data
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
58 $data = $_POST['message'];
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
59 }
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
60
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
61
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
62
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
63 $sock = open_socket();
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
64 if ($sock !== false) {
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
65 if (isset($data) && $data != "") {
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
66 socket_write($sock, $messageType . " " . $data, 4096);
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
67 } else {
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
68 socket_write($sock, $messageType, 4096);
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
69 }
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
70
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
71 /*
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
72 * Multiple reads until the remote closed the connection
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
73 */
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
74 $answer = "";
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
75 while (1) {
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
76 $line = socket_read($sock, 4096);
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
77 if ($line === '')
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
78 break;
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
79 $answer .= $line;
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
80 }
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
81
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
82 /*
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
83 * Can be a multiline answer, the answer includes \r\n sequences.
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
84 */
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
85 echo $answer;
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
86 socket_close($sock);
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
87 }
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
88
6e7e69f3493a Start over again with web pages
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
89

mercurial