❶ linux c++中要如何調用一個http介面
可以使用libcurl 庫
https://curl.haxx.se/libcurl/
#include<stdio.h>
#include<curl/curl.h>
intmain(void)
{
CURL*curl;
CURLcoderes;
curl=curl_easy_init();
if(curl){
curl_easy_setopt(curl,CURLOPT_URL,"curl.haxx.se");
res=curl_easy_perform(curl);
/*alwayscleanup*/
curl_easy_cleanup(curl);
}
return0;
}
更多的例子在這里https://curl.haxx.se/libcurl/c/example.html
❷ 如何在linux系統搭建http服務
1、安裝ftp服務端,方便你從客戶端上傳文件。linux上一般安裝vsftp.VSFTP的軟體安裝包是: vsftpd-2.2.2-12.el6_5.1.i686.rpm
查詢:#rpm -q vsftpd
安裝:#rpm -ivh vsftpd-2.2.2-12.el6_5.1.i686.rpm或者直接yum install vsftpd
啟動、停止及重啟VSFTP的命令: #service vsftpd start/stop/restart
配置文件:
/etc/vsftpd/vsftpd.conf //主配置文件
/etc/vsftpd.ftpusers //被禁止登錄FTP的用戶文件
/etc/vsftpd.user_list //允許登錄FTP的用戶文件
a、將登錄後的用戶限制在本地家目錄下:
#vi /etc/vsftpd/vsftpd.conf
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
新建受限用戶的列表文件並加入受限用戶名
#vi /etc/vsftpd.chroot_list
raykeso
重啟ftp服務
#service vsftpd restart
2、安裝apache,開啟目錄索引,這樣你就可以瀏覽和下載文件。
apache配置文件
<Directory "I:/build/dist"> #設置瀏覽文件的目錄
Options Indexes #開啟目錄列表索引模式Order allow,deny
Allow from all
</Directory>
❸ Linux啟動httpd命令
Linux httpd命令是Apache HTTP伺服器程序。httpd為Apache HTTP伺服器程序。直接執行程序可啟動伺服器的服務。
1、apahce啟動命令:推薦/usr/local/apache2/bin/apachectl start apaceh啟動
2、apache停止命令:/usr/local/apache2/bin/apachectlstop 停止
3、apache重新啟動命令:/usr/local/apache2/bin/apachectl restart 重啟要在重啟 Apache 伺服器時不中斷當前的連接,則應運行:/usr/local/sbin/apachectl graceful
如果apache安裝成為linux的服務的話,可以用以下命令操作:service httpd start 啟動service httpd restart 重新啟動service httpd stop 停止服務
4.httpd是Apache超文本傳輸協議(HTTP)伺服器的主程序。被設計為一個獨立運行的後台進程,它會建立一個處理請求的子進程或線程的池。
通常,httpd不應該被直接調用,而應該在類Unix系統中由 apachectl 調用,在Windows NT/2000/XP/2003中作為服務運行和在Windows 95/98/ME中作為控制台程序運行。
(3)linuxhttp編程擴展閱讀
linux與windows對比
1、 編程篇
雖然五年已經過去了,但是系統編程的模式基本沒有什麼改變,由於GPL的存在linux在編程效率上比windows要高不少,這是因為GPL公開程序代碼,這樣可以減少重復開發,所以linux在編程模式上比windows要略微強點。
但是須知windows還是常用軟體的主要載體,所以windows下的軟體還是要移植到windows下的,當然有很多軟體還是一直就在windows下開發的,所以這點windows並不比linux弱的太多。
值得一提的是windows8種引入的windows store,這樣的應用不知道可不可以在linux下開發,貌似目前windows8 app都是在windows8下開發的。
2、運行平台篇
linux系統可以運行在幾乎所有的硬體結構上,無論是intel、amd、arm處理器都可以,甚至我國的龍芯上跑的也是linux。而windows在更新到windows8後也實現了支持intel、amd和arm三大處理器架構。
但是相對而言,windows8 RT只能運行在特定的架構上並且不發售零售版,所以可以暫時不考慮。即linux比windows支持的處理器平台多。
linux下處理器性能能否達到windows的標准還很難說,因為電源管理等諸多問題,linux並不一定能發揮硬體的全部效率。這點在顯卡上體現的特別明顯。
AMD的顯卡開源驅動只能實現顯卡一半的性能,所以在運行平台上,linux兼容的更多,但是windows更完美,相對而言,只考慮運行平台的話(能用)linux略占優勢。
3、 硬體支持篇
linux的硬體支持除了顯卡外我感覺還是和windows保持同步的,比如usb3.0,HDMI等但在顯卡方面,尤其是雙顯卡方面linux就和windows差距明顯了,linux目前還沒有可靠的雙顯卡交火或者雙顯卡交互手段,所以就憑這一點linux在硬體支持方面占極大劣勢,
因為沒有雙顯卡支持會導致雙顯卡一直通電,能耗直線上升! 雖然linux的新內核早已解決了這個問題,但是linux下顯卡驅動的不足也導致這方面問題沒有根本解決。
4、網路篇
個人感覺除了google的chorme os外linux的網路已經發展的登峰造極了,linux對網路的利用率是非常高的,畢竟GPL的基本交流手段就是網路,所以網路功能上linux很給力的,至於ipv6什麼的windows和linux早就一樣哈皮了。
不過有一點就是flash player上的問題制約了linux網路媒體的應用,因為flash player在linux佔用的資源過高,導致性能下降??
5、 設備驅動篇
這個linux基本上什麼設備都能認出來,但是能驅動的設備顯然沒有windows多,畢竟除了arm處理器外基本上每個硬體都會為windows寫驅動,但是能為linux寫驅動的就不多了,很多linux驅動是用開源驅動的,這樣的話效率??
所以個人感覺windows的驅動比linux下強。
6、 UNIX能力篇
這個,我不太同意原作者設立這個指標的,畢竟linux是unix like系統,而windows和這個不沾邊??所以UNIX能力肯定是linux強啊,但是不是還有原版的unix么,所以這點應該列入評價指標。
7、性能篇
這個是很重要的一點,原作者分為開放性、多用戶和多任務三個方面來進行的對比。開放性其實linux和windows都一樣的,都很開放,不過windows8相比前輩們有點保守,所以linux的開放性應該更好點。
多用戶方面,linux和windows都支持多個用戶,但是linux可以多用戶同時登陸,不過考慮到個人電腦的情況,這個指標一般沒有什麼用。所任務,這點有很多測評,大家可以去網路或者google一下,一般大家都認為linux效率更高一點。
8、創新篇
我實際上很反對這種為了創新而創新的對比方式的。windows和linux都是操作系統,為了實現類似的功能,出現多多少少一些類似是正常的。
就開發狀態而言,linux是開源的,而windows不開源,所以linux應該高點,但是不要忘了windows系統也能得到全世界的很多第三方軟體的支持,所以創新性而言雙方並沒有可比性,因該是在同一水平。
9、病毒防護篇
這一點毫無疑問是linux獲勝,目前世界上還沒有一種可以在linux下大規模泛濫的病毒,而且linux的安全性完全是建立在其保守的內核設計上的,所以linux是很安全的。相對於windows雖然windows8在win7的基礎上又提高了很多,但是與linux還是有差距的。
實際上,為了保證用戶體驗,很多時候windows是必須犧牲防護性能的,所以能做到這點已經非常不容易了,真要超級安全的還FreeBSD是不是更安全呢?
10、穩定篇
系統穩定性上我感覺linux與windows不相上下,因為windows與linux都會崩潰,雖然windows崩潰原因很多,而linux崩潰大部分是有誤操作,但是二者的差距真心沒有那麼大,而且windows實際上出現藍屏代碼什麼的故障次數也已經比以前少多了。
❹ Linux編程的幾個重要知識點
第一階段:linux基礎入門
Linux基礎入門主要包括: Linux硬體基礎、Linux發展歷史、Linux系統安裝、xshell連接、xshell優化、SSH遠程連接故障問題排查、L inux基礎優化、Linux目錄結構知識、Linux文件屬性、Linux通配符、正則表達式、Linux系統許可權等
第二階段:linux系統管理進階
linux系統管理進階包括:Linux定時任務、Linux用戶管理、Linux磁碟與文件系統、Linux三劍客之sed命令等。
第三階段:Linux Shell基礎
Linux Shell基礎包括:Shell編程基礎、Linux三劍客之awk命令等。
第四階段:Linux網路基礎
第五階段:Linux網路服務
Linux網路服務包括:集群實戰架構開始及環境准備、rsync數據同步服務、Linux全網備份項目、nfs網路存儲服務精講、inotify/sersync實時數據同步/nfs存儲實時備份項目等。
第六階段:Linux重要網路服務
Linux重要網路服務包括:http協議/www服務基礎、nginx web介紹及基礎實踐、nginx web、lnmp環境部署/資料庫異機遷移/共享數據異機遷移到NFS系統、nginx負載均衡、keepalived高可用等。
第七階段:Ansible自動化運維與Zabbix監控
Ansible自動化運維與Zabbix監控包括: SSH服務秘鑰認證、ansible批量自動化管理集群、 zabbix監控等。
第九階段:大規模集群高可用服務(Lvs、Keepalived)
第十階段:Java Tomcat服務及防火牆Iptables
第十一階段:MySQL DBA高級應用實踐
MySQL DBA高級應用實踐包括:MySQL資料庫入門基礎命令、MySQL資料庫進階備份恢復、MySQL資料庫深入事務引擎、MySQL資料庫優化SQL語句優化、MySQL資料庫集群主從復制/讀寫分離、MySQL資料庫高可用/mha/keepalved等。
第十二階段:高性能資料庫Redis和Memcached課程
第十三階段:Linux大規模集群架構構建(200台)
第十四階段:Linux Shell編程企業案例實戰
第十五階段:企業級代碼發布上線方案(SVN和Git)
第十六階段企業級Kvm虛擬化與OpenStack雲計算
第十七階段公有雲阿里雲8大組件構建集群實戰
第十八階段:Docker技術企業應用實踐
第十九階段:Python自動化入門及進階
第二十階段:職業規劃與高薪就業指導
❺ Linux C語言網路編程問題!
unsigned int dir(char * server) {
int sck;//套接字變數
struct sockaddr_in serv_adr; //遠程主機的地址
struct hostent *host; //指向遠程主機的指針
unsigned char databuf[FILEBUF_SIZE]; //數據
int bytes = 0, bytesread = 0; //位元組數,讀取到的位元組數
host = gethostbyname(server); //根據遠程主機的主機名,得到指向遠程主機的指針
if (host == (struct hostent *) NULL) { //如果得到指向遠程主機的指針失敗,報告錯誤,並返回
perror("gethostbyname failed");
return 0;
}memset(&serv_adr, 0, sizeof(serv_adr)); //初始化遠程主機的地址,結構體內所有成員清零
serv_adr.sin_family = AF_INET; //設置地址類型
memcpy(&serv_adr.sin_addr, host->h_addr, host->h_length);//取出指向遠程主機的指針中包含的地址信息,賦給遠程主機地址變數
serv_adr.sin_port = htons(SERVICE_PORT);//設置埠號,比如http服務對應80埠,ftp對應21埠
if ((sck = socket(AF_INET, SOCK_STREAM, 0)) < 0) { //如果建立TCP協議的套接字失敗,報告錯誤,並返回
perror("error on socket()");
return 0;
}
if (connect(sck, (struct sockaddr *)&serv_adr, sizeof(serv_adr)) < 0) {//如果使用該套接字連接到遠程主機失敗,報告錯誤,並返回
perror("error on connect()");
return 0;
}write(sck, "DI\n\n", 4); //連接成功,發送內容為"DI\n\n"的消息,遠程主機收到該消息,解析後生成目錄列表,並將目錄列表信息傳遞回來
printf("Remote directory listing:\n");//輸出提示信息「遠程主機正在生成目錄列表」
while ((bytes = read(sck, databuf, FILEBUF_SIZE)) > 0) { //從套接字的數據流中讀取遠程主機的返回信息(即目錄列表),每次讀取FILEBUF_SIZE個位元組,直到全部讀取完畢
write(fileno(stdout), databuf, bytes);//將每次讀到的數據,輸出到標准輸出流(stdout),即屏幕上
bytesread += bytes;//接收到的位元組數累加
}
close(sck); /* Close the socket */ //通信完成,關閉套接字,關閉連接
return bytesread; //返回讀取到的位元組數(即遠程主機返回的信息的大小)
}