<?php //客户端
header("Content-type:text/html;Charset=gb2312");$DBserver         = "localhost";
$DBname           = "new";
$DBuser           = "root";
$DBpassword       = "";$con = mysql_connect("localhost","root","");mysql_select_db("new");class Socket{
private $host;
private $port;
private $error=array();
private $socket=null;
private $queryStr="";
public function construct($host,$port){
if(!extension_loaded("sockets")){
exit("extension=php_sockets.dll");
}
if (empty($host))exit("157.55.17.201");
if(empty($port))exit("5432");
$this->host=$host;
$this->port=$port;
$this->CreateSocket();
}

private function CreateSocket(){
!$this->socket&&$this->socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
$r=@socket_connect($this->socket,$this->host,$this->port);
if($r){
return $r;
}else {
$this->error[] = socket_last_error($this->socket);
return  false;
}
}

//向socket服务器写入数据并读取
public function eachMsg($contents){

$this->queryStr="select old_id from pagecontents where old_id = 1 ";

$this->queryStr=$contents;
!$this->socket&&$this->CreateSocket();
$contents=$this->fliterSendData($contents);
$result = socket_write($this->socket,$contents,strlen($contents));    //51行!!!!!!
if(!intval($result)){
$this->error[] = socket_last_error($this->socket);
return;
}
return $response;
}

//过滤数据
private function fliterSendData($contents){
//对写入数据进行处理
return $contents;
}

public function getError(){
return $this->error;
}

//最后一次错误信息
public function getLastError(){
return $this->error(count($this->error));
}

//获取最后一次发送的信息
public function  getLastMsg(){
return $this->queryStr;
}

public function getHost(){
return $this->host;
}

public function getPort(){
return $this->port;
}

private function close(){
$this->socket&&socket_close($this->socket);
$this->socket=null;
}

public function destruct(){
$this->close();
}
}
$SC=new Socket('127.0.0.1',1001);
//发送信息并接收服务器返回的数据
$REP = $SC->eachMsg('Hellow');  
var_dump($REP);
?>Warning: socket_write() [function.socket-write]: unable to write to socket [0]: 由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。 in C:\PHPnow\htdocs\3.31017.php on line 51
NULL 
<?php
if (extension_loaded('socket')) { 
echo '支持socket'; 
}else{ 
echo '不支持socket'; 

?>不支持socket支持sockets

解决方案 »

  1.   


    server是一直运行的
    server.php<?php
    //确保在连接客户端时不会超时
    set_time_limit(0);
    //设置IP和端口号
    $address = '127.0.0.1';
    $port = '1234';
    //创建一个SOCKET
    if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
        echo "socket_create() 失败的原因是:" . socket_strerror($sock) . "<br>";
    }
    //绑定到socket端口
    if (($ret = socket_bind($sock, $address, $port)) < 0) {
        echo "socket_bind() 失败的原因是:" . socket_strerror($ret) . "<br>";
    }
    //开始监听
    if (($ret = socket_listen($sock, 4)) < 0) {
        echo "socket_listen() 失败的原因是:" . socket_strerror($ret) . "<br>";
    }
    echo "正在端口: $post 监听\r\n";
    while (($msgsock = socket_accept($sock)) > 0) {
        //发到客户端
        $msg = "<font color=red>服务器端发送:欢迎进入服务器!</font><br>";
        socket_write($msgsock, $msg, strlen($msg));
        $buf = socket_read($msgsock, 8192);
        if ($buf != '')
            echo "客户端" . $_SERVER['REMOTE_ADDR'] . "登陆\r\n:传送信息:$buf\r\n";
        socket_close($msgsock);
    }
    socket_close($sock);
    ?> 
    client.php<?php
    error_reporting(0);
    set_time_limit(0);
    echo "<h2>TCP/IP Connection</h2>\n";
    $service_port = 1234;
    $address = "127.0.0.1";
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    if ($socket < 0) {
        echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
    } else {
        echo "OK.\n";
    }
    echo "Port:$service_port<br>";
    $result = socket_connect($socket, $address, $service_port);
    if ($result < 0) {
        echo "socket_connect() failed.\nReason: ($result) " .
         socket_strerror($result) . "\n";
    } else {
        echo "Load OK!<br>";
    }
    $in = "Hello\r\n";
    $out = '';
    $out1 = '';
    if (! socket_write($socket, $in, strlen($in))) {
        echo "socket_write() failed: reason: " . socket_strerror($socket) . "\n";
    } else {
        echo "Sucess<br>";
    }
    while ($out = socket_read($socket, 8192)) {
        echo "Server say:<br>";
        echo $out;
    }
    socket_close($socket);
    ?>