當前位置:首頁 » 編程語言 » c語言寫web伺服器
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言寫web伺服器

發布時間: 2022-05-27 06:59:11

『壹』 C++實現webservice

1 C++當然可以實現webservice,這是毋庸置疑的.axis2你知道嗎?本質是運行在tomcat下的一個servlet,分java版本,和c語言版本.官方網站為:http://axis.apache.org/,首頁上寫著:
The well known Apache Axis, and the the second generation of it, the Apache Axis2, are two Web Service containers that helps users to create, deploy, and run Web Services.
Axis2 is avaialble in both Java as well as C, languages and details about each version can be found below. 大概意思就是這東西分java版本和C版本,可以方便用戶創建,部署,運行web service.而C++完全是兼容C的.
2 當然需要伺服器,可能要實現某個服務吧,至於怎樣為其他平台服務,主要是監聽埠實現解析http協議.
3 你的問題有問題,js不需要拼串成XML,伺服器才要拼串,JS是運行在客戶端的,客戶端也不是通過SOAP與服務端進行通訊的,而是根據需要調用的服務的WSDL,提供對應參數,客戶端與服務端的通訊是用http協議的,而通訊方式根據是GET還是POST把相關參數放到HTTP頭或者體中.而web service之間的通訊才可能用得到SOAP.
4 PHP調用web service是非常簡單的,貌似有個函數通過SOAP調用.C++編寫的web service肯定有WSDL,可以根據WSDL描述的埠參數,來調用.
PS1:我沒有做過C++的Web service,只做過java的,但是所有語言都是相同的,基本原理都是一樣的,另外web service最好的做法是對外隱藏的,不能直接調用,應該有個類似調度中心的存在來負責調用,這是一個設計方式. 當然直接調用也是可以的,但這種方式效率不高.
PS2:C++可以做web service,但不是很好,缺乏技術支持,軟體支持,雖然管道過濾器模型不限制過濾器的實現方式,但怎麼說呢,C++就是不適合,畢竟和其他構件存在配合問題,而且開發成本也會相對要高點. 現在主流的是C#和JAVA.

『貳』 如何用c語言實現基於http的webservice

package com.yun.test;
import java.rmi.RemoteException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.PrefixedQName;
import org.apache.axis.message.SOAPHeaderElement;
import com.cezanne.golden.user.Exception;
import com.cezanne.golden.user.UserManagerServiceProxy;
import javax.xml.namespace.QName;
import java.net.MalformedURLException;
import javax.xml.rpc.ServiceException;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPException;
public class testWebService {
public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException
{
//標識Web Service的具體路徑
String endpoint = "WebService服務地址";
// 創建 Service實例
Service service = new Service();
// 通過Service實例創建Call的實例
Call call = (Call) service.createCall();
//將Web Service的服務路徑加入到call實例之中.
call.setTargetEndpointAddress( new java.net.URL(endpoint) );//為Call設置服務的位置
// 由於需要認證,故需要設置調用的SOAP頭信息。
Name headerName = new PrefixedQName( new QName("發布的wsdl里的targetNamespace里的url", "string_itemName") );
org.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName);
header.addTextNode( "blablabla" );
call.addHeader(header);

// SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("發布的wsdl里的targetNamespace里的url", "SoapHeader");
// soapHeaderElement.setNamespaceURI("發布的wsdl里的targetNamespace里的url");
// try
// {
// soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");
// }
// catch (SOAPException e)
// {
// e.printStackTrace();
// }
// call.addHeader(soapHeaderElement);
//調用Web Service的方法
org.apache.axis.description.OperationDesc oper;
org.apache.axis.description.ParameterDesc param;
oper = new org.apache.axis.description.OperationDesc();
oper.setName("opName");
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName(", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg1"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName(", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg2"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName(", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
oper.setReturnType(new javax.xml.namespace.QName(", "string"));
oper.setReturnClass(java.lang.String.class);
oper.setReturnQName(new javax.xml.namespace.QName("", "return"));
oper.setStyle(org.apache.axis.constants.Style.WRAPPED);
oper.setUse(org.apache.axis.constants.Use.LITERAL);
oper.addFault(new org.apache.axis.description.FaultDesc(
new javax.xml.namespace.QName("發布的wsdl里的targetNamespace里的url", "Exception"),
"Exception",
new javax.xml.namespace.QName("發布的wsdl里的targetNamespace里的url", "Exception"),
true
));
call.setOperation( oper );
call.setOperationName(new javax.xml.namespace.QName("發布的wsdl里的targetNamespace里的url", "opName"));
//調用Web Service,傳入參數
String res = ( String ) call.invoke( new Object[]("arg0","arg1"));
System.out.println("===============");
return res;
}
/**
* @param args
*/
public static void main(String[] args) {
try {
System.out.println(getResult());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
} catch (SOAPException e) {
e.printStackTrace();
}
}
}

『叄』 關於用C語言 寫一個簡單的WEB伺服器 只需要簡單的點擊響應就行 另尋大神知道C語言 交流 請教

用select監聽

『肆』 如何用c編寫網頁,使網頁具有發送數據以及接收數據

網頁發送數據接受數據間件職責

用C寫網頁編譯exe文件修改cgi.

其輸入輸都根據標准輸入輸完LZ想用虛擬主機執行C語言編寫CGI行CGI許可權太執行任何操作所買虛擬主機肯定支持C語言編寫CGI

CGI介面標准包括標准輸入、環境變數、標准輸三部
1.標准輸入
CGI程序像其執行程序,通標准輸入(stdin)Web伺服器輸入信息,Form數據,所謂向CGI程序傳遞數據POST意味著操作系統命令行狀態執行CGI程序,CGI程序進行調試POST用,本文例,析CGI程序設計、程技巧

2.環境變數
操作系統提供許環境變數,定義程序執行環境,應用程序存取Web伺服器CGI介面另外設置自些環境變數,用向CGI程序傳遞些重要參數CGIGET通 環境變數QUERY-STRING向CGI程序傳遞Form數據

3.標准輸
CGI程序通標准輸(stdout)輸信息傳送給Web伺服器傳送給Web伺服器信息用各種格式,通純文本或者HTML文本形式,我命令行狀態調試CGI程序,並且輸

面簡單CGI程序,HTMLForm信息直接輸We b瀏覽器
# include <stdio.h>
# include <stdib.h>
main()
{
int i , n ;
printf (〃Content type: text/plain\n\n〃);
n=0;
if(getenv(〃CONTENT-LENGTH〃))
n=atoi(getenv(CONTENT-LENGTH〃));
for (i=0;i<n;i++)
putchar(getchar());
putchar (′\n′);
fflush(stdout);
}

面程序作簡要析
prinft (〃Content type :text/plain\n\n〃);
行通標准輸字元串〃Content type :text/plain\n\n〃傳送給Web伺服器MIME信息,告訴Web伺服器隨輸純ASCII文本形式請注意信息兩新行符,Web伺服器需要實際文本信息始前先看見空行
if (getenv(〃CONTENT-LENGTH〃))
n=atoi (getenv(〃CONTENT-LENGTH〃));
行首先檢查環境變數CONTENT-LENGTH否存Web伺服器調用使用POSTCGI程序設置環境變數,文本值表示Web 伺服器傳送給CGI程序輸入字元數目,我使用函數atoi() 環境變數值轉換整數,並賦給變數n請注意Web伺服器並文件結束符終止輸,所檢查環境變數CONTENT-LENGTH, CGI程序知道候輸入結束

for (i=0;i<n;i++)
putchar(getchar());
行0循環(CONTENT-LENGTH-1)標准輸入讀每字元直接拷貝標准輸,所輸入ASCII形式送給Web伺服器
通例,我CGI程序般工作程總結幾點
1.通檢查環境變數CONTENT-LENGTH,確定少輸入;
2.循環使用getchar()或者其文件讀函數所輸入;
3.相應處理輸入;
4.通〃Contenttype:〃信息,輸信息格式告訴Web伺服器;
5.通使用printf()或者putchar()或者其文件寫函數,輸傳送給Web伺服器
總,CGI程序主要任務Web伺服器輸入信息,進行處理,輸結再送給Web伺服器

『伍』 如何用c語言在windows環境下實現簡單的web伺服器

用C語言開發WEB,可以用C++BUILDER6,稱ISAPI,一般人可能做不起來,有點麻煩;
唯一是速度很快,別人看不到源碼,掌握了編程套路,也可以開發應用;
缺點:
1。不是解釋性語言,做的WEB調試非常麻煩;現在做WEB開發的,用C#、JAVA較多;都是解釋性的語言;
2。因為是.DLL的二進制代碼,一般商業網站不給予運行的環境,因為網站伺服器會被你可能搞癱,安全性得不到保障;所以,你得自備網頁伺服器;
3。得不到技術支持,因為沒幾個人會這種開發;

『陸』 用c語言寫一個網站給點思路

現在沒有拿C語言寫網站的,可以拿C寫一個web伺服器。
早期的時候,有C語言的網站,說白了就是,一個exe程序,輸入是用戶提交的請求,輸出是網頁,輸出目標是遠程的瀏覽器,這樣子的。

『柒』 c語言寫的web伺服器,用什麼函數可以切斷特定的ip地址的連接

int close(int fd);
close(client_socket);close(server_socket);

『捌』 如何用C語言開發一個通用web伺服器

用C語言開發WEB,可以用C++BUILDER6,稱ISAPI,一般人可能做不起來,有點麻煩;
唯一是速度很快,別人看不到源碼,掌握了編程套路,也可以開發應用;
缺點:
1。不是解釋性語言,做的WEB調試非常麻煩;現在做WEB開發的,用C#、JAVA較多;都是解釋性的語言;
2。因為是.DLL的二進制代碼,一般商業網站不給予運行的環境,因為網站伺服器會被你可能搞癱,安全性得不到保障;所以,你得自備網頁伺服器;
3。得不到技術支持,因為沒幾個人會這種開發;

『玖』 C語言是否合適用於Web開發

用C語言開發WEB,我用C++BUILDER6做過,稱ISAPI,一般人可能做不起來,有點麻煩;
唯一是速度很快,別人看不到你的源碼,掌握了編程套路,也可以開發應用;
缺點:
1。不是解釋性語言,做的WEB調試非常麻煩;現在做WEB開發的,用C#、JAVA較多;都是解釋性的語言;
2。因為是.DLL的二進制代碼,一般商業網站不給予運行的環境,因為網站伺服器會被你可能搞癱,安全性得不到保障;所以,你得自備網頁伺服器;
3. 得不到技術支持,沒人邦你,因為沒幾個人會這種開發;

『拾』 用C語言進行web後端編程有什麼不妥

如果你的目的只是開車,你是願意買輛車開哪,還是造輛車開呢??? 後者不是你想的那麼容易。。。C語言理論上什麼都能幹,但實際上又好像什麼也做不了。。。。用C語言做高級編程總會繞很大一圈,原因是缺乏現成的工具,很多時候你不得不自己去做,但前提是你會不會做。。。。
C語言肯定可行,但你有什麼眉目嗎???