這篇文章給大家分享的是有關(guān)如何使用socket函數(shù)從新聞組中獲取文章的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)是專業(yè)的南召網(wǎng)站建設(shè)公司,南召接單;提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行南召網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
socket函數(shù)聲明是什么樣的
intfsockopen(stringhostname,intport_
[,interrno[,stringerrstr[,doubletimeout]]])
這個函數(shù)將打開一個連接到主機hostname的port端口的TCP連接。hostname可以是一個有效的域名,或者是一個ip地址。對于udp連接,你必須指定協(xié)議:udp://hostname.對于unix域,主機名使用到socket的路徑,這種情況下,端口port必須置為0??蛇x的timeout參數(shù)用來設(shè)定等待打開一個socket的時間,單位為秒。
網(wǎng)絡(luò)新聞傳輸協(xié)議
訪問新聞組服務(wù)器需要通過稱為NNTP(網(wǎng)絡(luò)新聞傳輸協(xié)議)的協(xié)議來進行。這個文檔分別描述了怎樣連接到NNTP服務(wù)器,怎樣同服務(wù)器對話,以及完成這些任務(wù)的不同命令。
連接
連接到一個NNTP服務(wù)器需要知道它的主機名(或者是ip地址)和它偵聽的端口。為了避免一個連接企圖失敗導致程序掛起,你應(yīng)該使用timeout參數(shù)。
$cfgServer="your.news.host";
$cfgPort=119;
$cfgTimeOut=10;
//openasocket
if(!$cfgTimeOut)
//withouttimeout
$usenet_handle=fsockopen($cfgServer,$cfgPort);
else
//withtimeout
$usenet_handle=fsockopen($cfgServer,$cfgPort,&$errno,&$errstr,$cfgTimeOut);
if(!$usenet_handle){
echo"Connectionfailed.\n";
exit();
}
else{
echo"Connected.\n";
$tmp=fgets($usenet_handle,1024);
}
?>
與服務(wù)器對話
現(xiàn)在我們已經(jīng)連接到了服務(wù)器,可以通過前面打開的socket同服務(wù)器對話了。比如說我們要從某個新聞組得到最近的10篇文章。RFC977指出,第一步要用GROUP命令選擇正確的新聞組:
GROUPggg
參數(shù)ggg是要選擇的新聞組的名字(比如說是"net.news"),這是必需的。可用的新聞組的列表可以用LIST命令得到。選擇新聞組的命令成功后,返回組中第一篇和最后一篇文章的文章編號,以及組中文章的數(shù)目。
下面是一個例子:
chrome:~$telnetmy.news.host119
Tryingaa.bb.cc.dd...
Connectedtomy.news.host.
Escapecharacteris'^]'.
200my.news.hostInterNetNewsNNRPserverINN2.2.213-Dec-1999ready(postingok).
GROUPalt.test
211232222996223235alt.test
quit
205.
接收到命令GROUPalt.test后,服務(wù)器返回"211232222996223235alt.test".211是RFC中定義的返回碼,指示命令已成功執(zhí)行。返回信息還指出,現(xiàn)在有232篇文章,最早的文章的編號是222996,最新的文章的編號是223235。我們看到,222996+232并不等于223235。丟失的7篇文章因為某種原因被從服務(wù)器刪除了,可能是因為被它的合法作者取消了(這是可能的,而且很容易做到),或者因為是灌水文章而被刪。
需要注意的事,有些服務(wù)器在選擇新聞組之前可能要求身份認證,這取決于這是一個公共的或者是私用的服務(wù)器。也有可能服務(wù)器允許任何人讀取文章,但發(fā)表文章需要身份驗證。
//$cfgUser="xxxxxx";
//$cfgPasswd="yyyyyy";
$cfgNewsGroup="alt.php";
//identificationrequiredonprivateserver
if($cfgUser){
fputs($usenet_handle,"AUTHINFOUSER".$cfgUser."n");
$tmp=fgets($usenet_handle,1024);
fputs($usenet_handle,"AUTHINFOPASS".$cfgPasswd."n");
$tmp=fgets($usenet_handle,1024);
//checkerror
if($tmp!="281Okrn"){
echo"502Authenticationerrorn";
exit();
}
}
//selectnewsgroup
fput($usenet_handle,"GROUP".$cfgNewsGroup."n");
$tmp=fgets($usenet_handle,1024);
if($tmp=="480Authenticationrequiredforcommandrn"){
echo$tmp;
exit();
}
$info=split("",$tmp);
$first=$info[2];
$last=$info[3];
printf("First:%sn",$first);
printf("Last:%lastn",$last);
?>
感謝各位的閱讀!關(guān)于“如何使用socket函數(shù)從新聞組中獲取文章”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
本文標題:如何使用socket函數(shù)從新聞組中獲取文章
本文地址:http://jinyejixie.com/article46/jjpphg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、動態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)