UEditor編輯器和php簡單的實現socket通訊

1、UEditor編輯器javascript

使用這個編輯器是須要先下載編輯器文件,記得下載的時候放入本身的網站中,既然是php中使用,天然我下載的就是php的UEditor編輯器了,而後是utf-8的php

其實使用很簡單,就是將你下載後中的幾個js文件先引入html

(1)按照文件說明,能夠引入這幾個文件(注意本身的文件保存路徑)java

<script id="container" name="content" type="text/plain">
            這裏是打開編輯器時顯示的內容
</script>

<!-- 配置文件 -->
<script type="text/javascript" src="UEditor/utf8-php/ueditor.config.js"></script>

<!-- 編輯器源碼文件 -->
<script type="text/javascript" src="UEditor/utf8-php/ueditor.all.js">
</script>

<!-- 實例化編輯器 -->
<script type="text/javascript">
            var ue = UE.getEditor('container');
</script>

運行以後就是這樣了數組

(2)能夠根據本身的須要修改這個編輯框的高和寬瀏覽器

只要加入屬性就能夠了緩存

<script id="container" name="content" type="text/plain" style="width:1000px;height:300px;">
            這裏是打開編輯器時顯示的內容
</script>

(3)設置和讀取編輯器的內容服務器

通 getContent 和 setContent 方法能夠設置和讀取編輯器的內容數據結構

ue.ready(function() {
    //設置編輯器的內容
    ue.setContent('hello');
			
    //獲取html內容,返回: <p>hello</p>
    var html = ue.getContent();

    //獲取純文本內容,返回: hello
    var txt = ue.getContentTxt();
});

這就是設置的編輯器內容:socket

配置項也能夠經過 ueditor.config.js 文件修改,好比保存位置,默認的大小,等等

還有不少的功能,查看官網吧

 

2、php簡單的實現socket通訊

php裏面如何實現socket通訊

先從服務器端提及。服務器端先初始化Socket,而後與端口綁定(bind),對端口進行監聽(listen),調用accept阻塞,等待客戶端鏈接。在這時若是有個客戶端初始化一個Socket,而後鏈接服務器(connect),若是鏈接成功,這時客戶端與服務器端的鏈接就創建了。客戶端發送數據請求,服務器端接收請求並處理請求,而後把迴應數據發送給客戶端,客戶端讀取數據,最後關閉鏈接,一次交互結束。

因爲socket服務端的代碼要監聽端口,等待接收請求,因此php在作socket服務的時候須要將php文件運行在CMD裏面。

若是要使php文件能夠在CMD裏面運行,則須要進行以下設置:

1.添加環境變量,名字爲PHP_HOME,值爲php文件安裝目錄下的.exe文件地址,如 D:\wamp\bin\php\php5.5.12\php.exe(注意是你本身的下載的位置)

環境變量怎麼打開?

(1)右鍵單擊「計算機」---「屬性」,打開的窗口

 (2)在左邊的欄中選擇「高級系統設置」,打開「系統屬性」對話框,單擊「環境變量」

 

(3)打開環境變量對話框,開始添加環境變量(添加就很少說了,新建就能夠了)

 

2.修改系統變量path的值

在path的值裏面添加php安裝的目錄:如 D:\wamp\bin\php\php5.5.12;

 

到這裏咱們就配置好了環境變量,下一步咱們打開CMD,想要在裏面運行php文件,好比1.php文件

看下個人這個php文件

  運行結果     

而後cmd的環境下運行(路徑必定要寫對!!!)

php文件可以成功在cmd裏面運行了。

 

3.socket相關函數:

socket_accept() 接受一個Socket鏈接
socket_bind() 把socket綁定在一個IP地址和端口上
socket_clear_error() 清除socket的錯誤或者最後的錯誤代碼
socket_close() 關閉一個socket資源
socket_connect() 開始一個socket鏈接
socket_create_listen() 在指定端口打開一個socket監聽
socket_create_pair() 產生一對沒有區別的socket到一個數組裏
socket_create() 產生一個socket,至關於產生一個socket的數據結構
socket_get_option() 獲取socket選項
socket_getpeername() 獲取遠程相似主機的ip地址
socket_getsockname() 獲取本地socket的ip地址
socket_iovec_add() 添加一個新的向量到一個分散/聚合的數組
socket_iovec_alloc() 這個函數建立一個可以發送接收讀寫的iovec數據結構
socket_iovec_delete() 刪除一個已經分配的iovec
socket_iovec_fetch() 返回指定的iovec資源的數據
socket_iovec_free() 釋放一個iovec資源
socket_iovec_set() 設置iovec的數據新值
socket_last_error() 獲取當前socket的最後錯誤代碼
socket_listen() 監聽由指定socket的全部鏈接
socket_read() 讀取指定長度的數據
socket_readv() 讀取從分散/聚合數組過來的數據
socket_recv() 從socket裏結束數據到緩存
socket_recvfrom() 接受數據從指定的socket,若是沒有指定則默認當前socket
socket_recvmsg() 從iovec裏接受消息
socket_select() 多路選擇
socket_send() 這個函數發送數據到已鏈接的socket
socket_sendmsg() 發送消息到socket
socket_sendto() 發送消息到指定地址的socket
socket_set_block() 在socket裏設置爲塊模式
socket_set_nonblock() socket裏設置爲非塊模式
socket_set_option() 設置socket選項
socket_shutdown() 這個函數容許你關閉讀、寫、或者指定的socket
socket_strerror() 返回指定錯誤號的詳細錯誤
socket_write() 寫數據到socket緩存
socket_writev() 寫數據到分散/聚合數組

(1)服務器的文件

重要的步驟:

+-------------------------------
* @socket_create    socket_create() 產生一個socket,至關於產生一個socket的數據結構
* @socket_bind      socket_bind() 把socket綁定在一個IP地址和端口上
* @socket_listen     socket_listen() 監聽由指定socket的全部鏈接
* @socket_accept   socket_accept() 接受一個Socket鏈接
* @socket_read      socket_read() 讀取指定長度的數據
* @socket_write     socket_write() 寫數據到socket緩存
* @socket_close     socket_close() 關閉一個socket資源

<?php
header("Content-Type: text/html; charset=utf-8");
//確保在鏈接客戶端時不會超時
set_time_limit(0);

//設置IP和端口號
$ip = "127.0.0.1";
$port = "1900";

/*----------------    如下操做都是手冊上的    -------------------*/

//產生一個socket,至關於產生一個socket的數據結構 
//AF_INET=是ipv4 若是用ipv6,則參數爲 AF_INET6
//SOCK_STREAM爲socket的tcp類型,若是是UDP則使用SOCK_DGRAM
if(($sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0) {
    echo "socket_create() 失敗的緣由是:".socket_strerror($sock)."\n";
}

//把socket綁定在一個IP地址和端口上
if(($ret = socket_bind($sock,$ip,$port)) < 0) {
    echo "socket_bind() 失敗的緣由是:".socket_strerror($ret)."\n";
}

//監聽由指定socket的全部鏈接
if(($ret = socket_listen($sock,4)) < 0) {
    echo "socket_listen() 失敗的緣由是:".socket_strerror($ret)."\n";
}

$count = 0;

do {
    if (
	//接受一個Socket鏈接它接收鏈接請求並調用一個子鏈接Socket來處理客戶端和服務器間的信息
	($msgsock = socket_accept($sock)) < 0) {
		echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
		break;
    	} 
  else {
 
        //得到客戶端的輸入
        $buf = socket_read($msgsock,8192);
        
        $talkback = "收到的信息:$buf\n";
        echo $talkback;
		
	//處理客戶端輸入並返回結果
	$msg ="測試成功!\n";
        socket_write($msgsock, $msg, strlen($msg));
        
        echo "測試成功了啊\n";
        
        if(++$count >= 5){
            break;
        };
    }
    //echo $buf;
    socket_close($msgsock);

} while (true);

socket_close($sock);
?>

在cmd環境下運行這個服務器文件,(亂碼有點)

查看是否是出於監聽狀態,在cmd環境中輸入netstat -ano

 

(2)客戶端文件 

重要的步驟:

+-------------------------------
* @socket_create
* @socket_connect    socket_connect() 開始一個socket鏈接
* @socket_write
* @socket_read
* @socket_close

<?php
header("Content-Type: text/html; charset=utf-8");
//顯示全部錯誤 error_reporting(E_ALL); set_time_limit(0); echo "<h2>TCP/IP Connection</h2>\n";
//IP和端口號 $port = 1935; $ip = "127.0.0.1"; //建立一個socket $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 "試圖鏈接 '$ip' 端口 '$port'...\n"; //開始socket連接 $result = socket_connect($socket, $ip, $port); if ($result < 0) { echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n"; }else { echo "鏈接OK\n"; } $in = "Ho\r\n"; $in .= "first blood\r\n"; $out = '';
//strlen()是返回字符串長度 if(!socket_write($socket, $in, strlen($in))) { echo "socket_write() failed: reason: " . socket_strerror($socket) . "\n"; }else { echo "發送到服務器信息成功!\n"; echo "發送的內容爲:<font color='red'>$in</font> <br>"; } while($out = socket_read($socket, 8192)) { echo "接收服務器回傳信息成功!\n"; echo "接受的內容爲:",$out; } echo "關閉SOCKET...\n"; socket_close($socket); echo "關閉OK\n"; ?>

在cmd環境下運行客戶端文件,注意保存路徑是否是正確的(我這有亂碼啊),可是能夠看出是正確的

上面的亂碼也就是瀏覽器顯示出來的

相關文章
相關標籤/搜索