很多站长朋友们都不太清楚phpsocket接口,今天小编就来给大家整理phpsocket接口,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php用socket获得客户端的ip和端口 2、 php 怎么关闭非正常退出时的socket端口 3、 php socket疑问 4、 php本地用虚拟机怎么模拟socket php用socket获得客户端的ip和端口import
socket
s
=
socket.socket(socket.af_inet,
socket.sock_stream)
s.bind(('127.0.0.1',
8888))
s.listen(1)
conn,
addr
=
s.accept()
conn,
addr
#
('127.0.0.1',
2134)
#addr
第一个为客户端ip,第二个为端口,上面的程序是tcp服务,udp类似。
php 怎么关闭非正常退出时的socket端口首先:
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
用图表示:
网络间的通信也就简单了许多,但毕竟还是有挺多工作要做的。以前听到Socket编程,觉得它是比较高深的编程知识,但是只要弄清Socket编程的工作原理,神秘的面纱也就揭开了
如果进程结束,关联的端口也会一同取消绑定,如果你重新打开无法绑定端口,说明你原来的进程并没有结束,请检查进程中还有没有原来的脚本。另外,你在脚本中加入关闭脚本时关闭端口的代码不就完全解决这个问题了吗
php socket疑问do{
if (($msgsock = socket_accept($sock)) < 0) {
echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
break;
}else{
$msg = '123';
socket_write($msgsock,$msg,strlen($msg));
$buf = socket_read($msgsock,8192);
echo "收到的信息";
}
socket_close($msgsock);
}while(true);
socket_close($sock);
php本地用虚拟机怎么模拟socket利用socket发送HTTP请求。
Socket的英文原义是“孔”或“插座”。通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。如此看来,其实利用socket操作远程文件和读写本地的文件一样容易,把本地文件看成通过硬件传输,远程文件通过网线传输就行了。
因而可以将发送请求的考虑成 建立连接->打开socket接口(fsockopen())->写入请求(fwrite())->读出响应(fread()->关闭文件(fclose())。话不多说,直接上代码:
conn($url);
$this->setHeader('Host: ' . $this->url['host']);
}
// 此方法负责写请求行
protected function setLine($method) {
$this->line[0] = $method . ' ' . $this->url['path'] . '?' .$this->url['query'] . ' '. $this->version;
}
// 此方法负责写头信息
public function setHeader($headerline) {
$this->header[] = $headerline;
}
// 此方法负责写主体信息
protected function setBody($body) {
$this->body[] = http_build_query($body);
}
// 连接url
public function conn($url) {
$this->url = parse_url($url);
//判断端口
if(!isset($this->url['port'])) {
$this->url['port'] = 80;
}
//判断query
if(!isset($this->url['query'])) {
$this->url['query'] = '';
}
$this->fh = fsockopen($this->url['host'],$this->url['port'],$this->errno,$this->errstr,3);
}
//构造get请求的数据
public function get() {
$this->setLine('GET');
$this->request();
return $this->response;
}
// 构造post查询的数据
public function post($body = array()) {
$this->setLine('POST');
// 设计content-type
$this->setHeader('Content-type: application/x-www-form-urlencoded');
// 设计主体信息,比GET不一样的地方
$this->setBody($body);
// 计算content-length
$this->setHeader('Content-length: ' . strlen($this->body[0]));
$this->request();
return $this->response;
}
// 真正请求
public function request() {
// 把请求行,头信息,实体信息放在一个数组里,便于拼接
$req = array_merge($this->line,$this->header,array(''),$this->body,array(''));
//print_r($req);
$req = implode(self::CRLF,$req);
//echo $req; exit;
fwrite($this->fh,$req);
while(!feof($this->fh)) {
$this->response .= fread($this->fh,1024);
}
$this->close(); //关闭连接
}
// 关闭连接
public function close() {
fclose($this->fh);
}
}
关于phpsocket接口的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于phpsocket接口 php socket_write的详细内容...