如何用c语言在windows环境下实现简单的web服务器

如何用c语言在windows环境下实现简单的web服务器,第1张

用C语言开发WEB,可以用C++BUILDER6,称ISAPI,一般人可能做不起来,有点麻烦;

唯一是速度很快,别人看不到源码,掌握了编程套路,也可以开发应用;

缺点:

1。不是解释性语言,做的WEB调试非常麻烦;现在做WEB开发的,用C#、JAVA较多;都是解释性的语言;

2。因为是.DLL的二进制代码,一般商业网站不给予运行的环境,因为网站服务器会被你可能搞瘫,安全性得不到保障;所以,你得自备网页服务器;

3。得不到技术支持,因为没几个人会这种开发;

package com.yudun.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语言的 历史

C语言由丹尼斯·里奇(Dennis Ritchie)于1972年在位于美国的AT&T(美国电话电报公司)贝尔实验室发明。C语言借鉴前辈语言的功能和优点,并且克服了它们存在的问题。可以说C语言是对当时现有语言的一次改进和总结,创造出一种在那个时代更加优秀的编程语言。直至当前,C语言还是一种比较重要的编程语言,在比较流行的编程语言排行榜上常年霸榜前几名,经久不衰。很多计算机专业都是以C语言作为第一编程入门语言,可见C语言的影响和重要性。

图一 编程语言趋势&2021排行榜(部分)

二、C语言的特点

C语言是一种中级编程语言,相对于低级语言汇编,高级语言Java等现代语言。C语言可以直接访问内存,分配内存,与硬件设备交互,具有低级语言的特点;相对于现代的面向对象编程,C语言是一种面向过程语言,面向过程语言也称为结构化程序设计语言。通俗的讲,面向对象编程是把对象当做一个基本编程单位/个体;面向过程编程,把一些功能划分成一个单元称之为函数,程序的执行就是函数顺序逐步的执行。

三、C语言的应用

C语言有很多方面的应用。首先,C语言发明者使用C语言编写了Unix操作系统。Linux操作系统也是使用C语言开发出来的。现代很多基础软件是使用C语言开发的,比如我们常用的wps办公软件等等桌面应用软件,如果你仔细观察,你可能发现平时电脑上使用的很多应用就是使用C语言开发出来的,是不是有点小惊讶。可见C语言的应用是很普遍的。C语言应用的领域有系统内核、驱动、基础应用、桌面应用等等。不过有些领域并没有使用C语言,Web开发并没有使用C语言,然而,Web服务器、中间件使用C语言开发是比较司空见惯的。

我们可以列举日常使用的软件有哪些是使用C语言开发的。谷歌浏览器部分使用C语言开发,一些规模比较大的软件,并不是使用单一的编程语言开发出来。QQ、微信PC端也是使用CC++开发。还有wps等等,很大一部分日常使用的PC软件都是使用CC++开发的。软件开发领域使用的软件应用有更多是使用CC++开发出来的。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/345153.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-07
下一篇2023-05-07

发表评论

登录后才能评论

评论列表(0条)

    保存