c服務引用
㈠ Java客戶端遠程調用C服務器
真沒有作過相關的開發,Java和C之間相互調用,本地的使用jni或者是直接發送Windows消息;遠程的,都版是使用socket通信的。談一些想權法,希望能給你些幫助,紙上談兵:
1)現在常用的異構系統之間的調用,採用Web Service的方法,沒做過,但是應該可以。
2)RMI是Java To Java,另外Sun還提供了RMI-IIOP,這個是綜合了RMI和Corba,是可以用在Java和其它語言對象之間的遠程調用,但是我沒有資料,也許你需要看看Corba的基本知識,如何使用idl來定義C對象的介面.
3)我不知道你對C所在的伺服器有什麼要求,是否可以運行Java.如果可以,那麼有一個方法,你可以做一個Java程序來作為RMI的伺服器,然後這個Java程序負責和Java客戶通信,通信的方式還是RMI.然後,在這個Java服務程序中,同過jni的方法調用你的C程序.
㈡ 微服務中,A服務調用B,B調用C,C調用D,連續調用過程中,出現超時怎麼辦
傳遞調用,如果超時傳遞就失效了,沒有太好的 辦法,記錄日誌,返回報錯信息。
㈢ c:windows\system32\config\systemprofile\desktop引用了一個不可用的位置
你去另一台電腦下載軟體,然後把軟體安裝包發送到u盤,U盤插入您的電腦找到安版裝包位置,開始安裝。權
開啟administrator,登陸後復制admin用戶里的「桌面」空文件夾,再把原來的桌面文件復制回去,重新登錄!。
這個不行的話,就點開始,把滑鼠移到我的電腦,右鍵 ,創建快捷方式 試試看。
㈣ 在C#中怎樣調用一個C,C++的介面
把函來數的聲明、定義和調用分清楚。自
[dllimport(...)]
public static extern int 方法b(int 參數);
這個是聲明
因為函數是在dll中實現的,所以不需要定義。
調用
int result = 方法b(a); //這里的a是實參
在C語言的dll中:
int 方法b(int c) //這里的c是形參
{
...
}
㈤ C/S程序怎麼在後台調用伺服器的WebService
1、新建一個文本文件,把擴展名改成.vbs
2、右鍵點擊這個vbs文件,在彈出的菜單中選回擇編輯
3、輸入以下命令
Set ws = CreateObject("Wscript.Shell") ws.run "cmd /c test",vbhide
然後答Ctrl+S保存
4、最後打開這個vbs文件即可
沒有dos窗口,也沒有任務欄圖標,你也可以打開任務管理器在上面找到cmd.exe這就是你後台運行的批處理命令。
5、批量處理是一個ASCII文件,它包含一個或多個操作系統命令。批處理程序的文件名的擴展名是.cmd 或.bat。當您在命令提示中鍵入文件名,或者當從另一個程序運行批處理程序時,其命令將按順序處理。批處理程序也被稱為批處理文件,也稱為批處理腳本,英文譯為BATCH,批處理文件後綴BAT就取的前三個字母。
㈥ 51單片機模塊化,中斷服務函數(在main.c中)所提供的值,能不能被其他.c文件調用怎麼調用
樓上已經說了。
跨文件、跨模塊的全局變數引用,引用方在聲明該全局變數/函數時,需要在前面加上extern關鍵字,這樣編譯器才會知道「哦,這個名字在這個文件不一定有聲明,要把所有文件編譯了也許才能找到」。
㈦ java怎麼引用c
Java調用C語言程抄序時,主要是涉襲及到操作系統底層的事件。這種時間Java無法處理,例如用戶上傳一個視頻文件,需要後台給視頻加上水印,或者後台分離視頻流和音頻流。只能通過調用C語言處理。
使用Java如何去調用C語言的介面呢?使用Java的JNI技術。
具體調用步驟如下:
1.首先創建Java文件 HelloJni.java ,並創建native方法。
2.編譯Java文件並生成java頭文件。
3.創建C語言文件,HelloWorld.c。
4.生成動態鏈接庫文件 libhello.so。
5.設置動態鏈接庫文件的目錄。
6.把剛才生成的so文件拷貝到/home/lib下,然後執行class文件。
㈧ C語言中如何引用其它C源文件中的函數
在源文件A1.c中調用.c 中的函數有兩種方法:
1、在A2.c中有完整的函數定義,在A1.c中添加一下要用到的函數原型(聲明)就可以了,例如:
在A2.c中:有函數void A2(){...};。
在A1.c中:在文件前頭增加一行:void A2();就可以了。
2、把A2.c中完整定義的函數的原型,寫到一個A2.h文件中,然後在A1.c的文件頭增加#include "A2.h"就可以了。
以上兩種方法,在A1.c中都可以正常的調用,就跟在A2.c中調用一樣。
其實函數默認是外部的,只要在其他文件中聲明就能使用;但是注意如果在前面加上static,就只能在本文件中使用了,不能再被其他的文件調用。
(8)c服務引用擴展閱讀:
1、一個.h文件要 對應有一個.c文件,這樣鏈接器就可以調用這個文件里的函數。比如a.h 和 a.c。
2、把相應的函數定義寫在.c文件中。這里要強調一點:要加上#include ".h",這個一般作為一種工程規范。因為如果.c文件中的函數也需要調用同個.c中的其它函數,那麼這個.c往往會include對應的.h。比如頭文件里進行了變數的聲明,這個時候對應的.c文件是一定要加上這個頭文件的。
3、再在其他的main.c文件開頭添加#include "a.h"。
㈨ JAVA調用C語言發布的webservice介面
Java調用WebService可以直接使用Apache提供的axis.jar自己編寫代碼,或者利用Eclipse自動生成WebService Client代碼,利用其中的Proxy類進行調用。理論上是一樣的,只不過用Eclipse自動生成代碼省事些。
1、編寫代碼方式:
packagecom.yun.test;
importjava.rmi.RemoteException;
importorg.apache.axis.client.Call;
importorg.apache.axis.client.Service;
importorg.apache.axis.message.PrefixedQName;
importorg.apache.axis.message.SOAPHeaderElement;
importcom.cezanne.golden.user.Exception;
importcom.cezanne.golden.user.UserManagerServiceProxy;
importjavax.xml.namespace.QName;
importjava.net.MalformedURLException;
importjavax.xml.rpc.ServiceException;
importjavax.xml.soap.Name;
importjavax.xml.soap.SOAPException;
publicclasstestWebService{
publicstaticStringgetResult()throwsServiceException,MalformedURLException,RemoteException,SOAPException
{
//標識WebService的具體路徑
Stringendpoint="WebService服務地址";
//創建Service實例
Serviceservice=newService();
//通過Service實例創建Call的實例
Callcall=(Call)service.createCall();
//將WebService的服務路徑加入到call實例之中.
call.setTargetEndpointAddress(newjava.net.URL(endpoint));//為Call設置服務的位置
//由於需要認證,故需要設置調用的SOAP頭信息。
NameheaderName=newPrefixedQName(newQName("發布的wsdl里的targetNamespace里的url","string_itemName"));
org.apache.axis.message.SOAPHeaderElementheader=newSOAPHeaderElement(headerName);
header.addTextNode("blablabla");
call.addHeader(header);
//=newSOAPHeaderElement("發布的wsdl里的targetNamespace里的url","SoapHeader");
//soapHeaderElement.setNamespaceURI("發布的wsdl里的targetNamespace里的url");
//try
//{
//soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");
//}
//catch(SOAPExceptione)
//{
//e.printStackTrace();
//}
//call.addHeader(soapHeaderElement);
//調用WebService的方法
org.apache.axis.description.OperationDescoper;
org.apache.axis.description.ParameterDescparam;
oper=neworg.apache.axis.description.OperationDesc();
oper.setName("opName");
param=neworg.apache.axis.description.ParameterDesc(newjavax.xml.namespace.QName("","arg0"),org.apache.axis.description.ParameterDesc.IN,newjavax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string"),java.lang.String.class,false,false);
param.setOmittable(true);
oper.addParameter(param);
param=neworg.apache.axis.description.ParameterDesc(newjavax.xml.namespace.QName("","arg1"),org.apache.axis.description.ParameterDesc.IN,newjavax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string"),java.lang.String.class,false,false);
param.setOmittable(true);
oper.addParameter(param);
param=neworg.apache.axis.description.ParameterDesc(newjavax.xml.namespace.QName("","arg2"),org.apache.axis.description.ParameterDesc.IN,newjavax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string"),java.lang.String.class,false,false);
param.setOmittable(true);
oper.addParameter(param);
oper.setReturnType(newjavax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string"));
oper.setReturnClass(java.lang.String.class);
oper.setReturnQName(newjavax.xml.namespace.QName("","return"));
oper.setStyle(org.apache.axis.constants.Style.WRAPPED);
oper.setUse(org.apache.axis.constants.Use.LITERAL);
oper.addFault(neworg.apache.axis.description.FaultDesc(
newjavax.xml.namespace.QName("發布的wsdl里的targetNamespace里的url","Exception"),
"Exception",
newjavax.xml.namespace.QName("發布的wsdl里的targetNamespace里的url","Exception"),
true
));
call.setOperation(oper);
call.setOperationName(newjavax.xml.namespace.QName("發布的wsdl里的targetNamespace里的url","opName"));
//調用WebService,傳入參數
Stringres=(String)call.invoke(newObject[]("arg0","arg1"));
System.out.println("===============");
returnres;
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
try{
System.out.println(getResult());
}catch(MalformedURLExceptione){
e.printStackTrace();
}catch(RemoteExceptione){
e.printStackTrace();
}catch(ServiceExceptione){
e.printStackTrace();
}catch(SOAPExceptione){
e.printStackTrace();
}
}
}
2、利用Eclipse自動生成WebService client代碼就容易多了:
首先,new project,選擇other,在輸入框中輸入Web Service Client,選中搜索後的結果,點擊Next,在Service definition中輸入 WebService的發布地址,點擊Finish
這樣,WebService Client代碼已經生成好了。
接下來寫一個Test類,在main函數中輸入如下代碼:
Stringendpoint="伺服器的WebService的地址";
YourWebServiceNameProxyumsp=newYourWebServiceNameProxy(endpoint);
try{
StringresultStr=umsp.opMethod("arg0","arg1");
System.out.println(resultStr);
}catch(Exceptione){
System.out.println("異常");
e.printStackTrace();
}catch(RemoteExceptione){
System.out.println("RemoteException異常");
e.printStackTrace();
}
㈩ 誰有c或c++寫的操作windows服務的的dll介面,給一份,我想在pb里調用
我暈,你直接使用window提供的API不就可以了,你這個問題除了從api(這本身就是微軟最權威的接專口),著手,屬難道你還要人幫你寫好,封裝好,然後提供dll與lib以及介面說明給你?這是工作是要錢滴,阿門。。。兩個辦法,要麼自己用api自己寫,要麼付費給別人還是用api幫你寫,阿門。。。