php socket的一个问题

huitian1621 2012-04-05 11:55:15

<?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


...全文
94 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
amani11 2012-04-05
  • 打赏
  • 举报
回复
开启服务端,监听对应的端口
coder 2012-04-05
  • 打赏
  • 举报
回复

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);
?>

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧