導航:首頁 > 配伺服器 > c如何訪問伺服器介面

c如何訪問伺服器介面

發布時間:2022-08-27 06:00:37

linux環境下,c語言怎麼讀取WEB伺服器的80埠上頁面的內容

已知url ,host, port;

int s, size;
struct sockaddr_in sin;
struct hostent* phe;
char cmd[256];
char msg_hdr[1000];
char* p;

//准備http中GET 方法的請求。
sprintf(cmd,"GET %s\r\nHTTP/1.1\r\nHost:%s", url, host);
//創建socket
if((s=socket(PF_INET,SOCK_STREAM,0))<0)
return -1;
//取得遠程主機的IP地址,失敗函數返回-1
if((phe = gethostbyname(host)) == NULL)
return -1;

memset(&sin,0,sizeof(sin));
memcpy(&sin.sin_addr,phe->h_addr,sizeof(struct in_addr));
sin.sin_family=AF_INET;
sin.sin_port=htons(pms->port);

//跟遠程機器建立連接,失敗函數返回-1
if(connect(s,(struct sockaddr*)&sin,sizeof(sin))==-1)
return -1;
//發送GET請求
if(write(s,cmd,strlen(cmd))<0)
return 0;

//從鏈接描述符(連接管道)中讀取傳送過來的數據
if(read(s, msg_hdr, 300)<0)
error;
close(s);

//讀到該文件的大小
if((p=strstr(msg_hdr,"Content-Length"))||(p=strstr(msg_hdr,"Content-length:")))
p+=16;
else
error;
//返回大小
size = atoi(p);

sprintf(cmd,"GET %s HTTP/1.1\r\nHost: %s\r\nAccept: */*\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nConnection: close\r\nRange: bytes0-%d\r\n\r\n", url, host, size);
//創建套介面
if((s=socket(AF_INET,SOCK_STREAM,0))<0)
return 0;
//取得遠程主機的IP地址,失敗返回0
if((phe = gethostbyname(host)) == NULL)
return 0;
memset(&sin,0,sizeof(sin));
memcpy(&sin.sin_addr,phe->h_addr,sizeof(struct in_addr));
sin.sin_family=AF_INET;
sin.sin_port=htons(port);
//建立連接
if(connect(s,(struct sockaddr*)&sin,sizeof(sin))==-1)
return 0;
//發送讀取請求
if(write(s,cmd,strlen(cmd))<0)
error;
read(s, buf, BUFSIZE)..............

⑵ 客戶機訪問伺服器是訪問遠程介面的方法,還是直接訪問遠程介面的實例方法

java 遠程處理
Java遠程方法調用(RMI)提供了Java程序語言的遠程通訊功能,這種特性使客戶機上運行的程序可以調用遠程伺服器上的對象,使Java編程人員能夠在網路環境中分布操作。
創建一個簡單的Java分布式遠程方法調用程序可以按以下幾個步驟操作,

一、定義遠程介面:
在 Java 中,遠程對象是實現遠程介面的類的實例, 遠程介面聲明每個要遠程調用的方法。在需要創建一個遠程對象的時候,我們通過傳遞一個介面來隱藏基層的實施細節,客戶通過介面句柄發送消息即可。
遠程介面具有如下特點:
1) 遠程介面必須為public屬性。如果不這樣,除非客戶端與遠程介面在同一個包內,否則 當試圖裝入實現該遠程介面的遠程對象時,調用會得到錯誤結果。
2) 遠程介面必須擴展介面java.rmi.Remote。
3) 除與應用程序本身特定的例外之外,遠程介面中的每個方法都必須在自己的throws從句中 聲明java.rmi.RemoteException。(或 RemoteException 的父類)。
4) 作為參數或返回值傳遞的一個遠程對象(不管是直接,還是本地對象中嵌入)必須聲明為遠 程介面,而不應聲明為實施類。
下面是遠程介面的定義
[java] view plain
package test;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.math.BigInteger;

public interface Fib extends Remote {
public int getFib(int n) throws RemoteException;
// public BigInteger getFib(BigInteger n) throws RemoteException;
}
二、實現遠程介面:
遠程對象實現類必須擴展遠程對象java.rmi.UnicastRemoteObject類,並實現所定義的遠程介面。遠程對象的實現類中包含實現每個遠程介面所指定的遠程方法的代碼。這個類也可以含有附加的方法,但客戶只能使用遠程介面中的方法。因為客戶是指向介面的一個句柄,而不是它的哪個類。必須為遠程對象定義構造函數,即使只准備定義一個默認構造函數,用它調用基礎類構造函數。因為基礎類構造函數可能會拋出 java.rmi.RemoteException,所以即使別無它用必須拋出java.rmi.RemoteException例外。
以下是遠程對象實現類的聲明:
[java] view plain
package test;
import java.math.BigInteger;
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;

public class FibImp extends UnicastRemoteObject implements Fib {
public FibImp() throws RemoteException {
super();
}
public int getFib(int n) throws RemoteException {
return n+2;
}

}
三、編寫伺服器類:
包含 main 方法的類可以是實現類自身,也可以完全是另一個類。下面通過RmiSampleServer 來創建一個遠程對象的實例,並通過java.rmi.registry.LocateRegistry類的createRegistry 方法從指定埠號啟動注冊服務程序,也可以通過執行 rmiregistry 命令啟動注冊服務程序,注冊服務程序的預設運行埠為 1099。必須將遠程對象名字綁定到對遠程對象的引用上: Naming.rebind("//localhost:8808/SAMPLE-SERVER" , Server);
以下是伺服器類的聲明:
[java] view plain
package test;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
public class FibonacciServer {
/**
* @param args
*/
public static void main(String[] args) {
try {
LocateRegistry.createRegistry(8804);
FibImp f = new FibImp();

// 注冊到 registry 中
Naming.rebind("//localhost:8804/SAMPLE-SERVER", f);
System.out.println("fib server ready");

} catch (RemoteException re) {
System.out.println("Exception in FibonacciImpl.main: " + re);
} catch (MalformedURLException e) {
System.out.println("MalformedURLException " + e);
}
}
}
四、編寫使用遠程服務的客戶機類:
客戶機類的主要功能有兩個,一是通過Naming.lookup方法來構造注冊服務程序 stub 程序實例,二是調用伺服器遠程對象上的遠程方法。
以下是客戶端類的聲明:
[java] view plain
package testClient;

import test.Fib;
import java.math.BigInteger;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
public class FibClient {
/**
* @param args
*/
public static void main(String[] args) {
String url = "//localhost:8804/SAMPLE-SERVER";
try {

Fib calc = (Fib) Naming.lookup(url);
for (int i = 0; i < 10; ++i) {
int f = calc.getFib(i);
System.out.println(f);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (NotBoundException e) {
e.printStackTrace();
}
}
}

⑶ 一區域網如何通過路由器訪問與另外一區域網相連的伺服器

讓c線路上的電腦訪問伺服器的方法有很多,但是只能修改b、c路由器的配置可能就要費些事。
如果不能修改伺服器和三層交換機的配置,伺服器上又沒有指向c網的路由配置,那就只能在c網路由器上配置伺服器的路由指向b網路由器,然後在b網路由器上配置地址轉換,將c網路的地址轉換成b網路地址,應該就可以解決上面的問題了。
還有,b網和c網之間還要先配置互相訪問,可以採取在 b、c路由器上增加互聯子介面的方式配置互相訪問。

⑷ (用C語言實現)客戶端如何通過socket調用伺服器函數

socket是用來和伺服器通信的,無法直接調用伺服器函數。
要實現功能,可以和伺服器約定協議。
比如,在與伺服器通信連接後,發送一系列標識符,最後加一個函數id,表示要求伺服器調用約定的某一個函數。
伺服器在接收到後,執行對應的函數,將結果返回給客戶端即可。

⑸ 用c/s做的客戶端怎麼訪問伺服器

可以通過直接訪問伺服器端資料庫完成。不過在訪問的過程中,為了安全考慮。可以先將客戶端發送的數據轉碼或者加密。然後到伺服器端後解密或者再轉碼。管理員可以通過B/S程序完成查看功能。C/S和B/S用同一個庫就可以了。如果連的是外網,就要考慮很多安全因素。

⑹ C語言編寫客戶端如何連接有道詞典伺服器

socket連接http api發送數據。

調用API需要向介面發送以下欄位來訪問服務:

欄位名 類型 含義 必填 備注

q text 要翻譯的文本 True 必須是UTF-8編碼

from text 源語言 True 語言列表 (可設置為auto)

to text 目標語言 True 語言列表 (可設置為auto)

appKey text 應用 ID True 可在 應用管理 查看

salt text 隨機數 True

sign text 簽名,通過md5(appKey+q+salt+應用密鑰)生成 True appKey+q+salt+應用密鑰的MD5值

ext 翻譯結果音頻格式,支持mp3 false mp3

voice 翻譯結果發音選擇,0為女聲,1為男聲,默認為女聲 false 0

⑺ vb中c/s程序,客戶端怎樣訪問伺服器端資料庫

在服務端做資料庫訪問的介面並且實現介面,然後在客戶端調用這個介面就可以了,。。

如果是基於互聯網的分布式應用也可以用"WebServices+VB"實現

去"微軟學生中心"網站下載"Web Service開發入門"視頻課件看看,挺簡單的

http://www.msuniversity.e.cn/default.aspx

⑻ 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就取的前三個字母。

⑼ c語言訪問伺服器

lz要先知道什麼是socket,它是TCP/IP協議的API。再上層是http udp之類傳輸報文協議。而什麼是伺服器,如你所說tomcat伺服器,他是一個http(s)伺服器。處理由客戶發送的HTTP報文。並返回報文給客戶。
簡單來說,http就是socket的一個封裝。所以c語言使用socket理所當然能訪問任何伺服器。至於使用什麼格式,你可以看看HTTP報文格式。

閱讀全文

與c如何訪問伺服器介面相關的資料

熱點內容
代駕app如何導航到起點 瀏覽:666
機器人穿越外國電影 瀏覽:681
贏在龍頭主圖指標源碼 瀏覽:951
符號加在命令後面 瀏覽:271
沙漏驗機寶檢測安卓手機怎麼樣 瀏覽:369
非洲電影有哪些好看的 瀏覽:763
媒介學pdf 瀏覽:234
推薦一個在線觀看 瀏覽:471
單片機16進制編程圖 瀏覽:490
金剛2迅雷下載 瀏覽:275
聚優電影卡使用范圍 瀏覽:760
浙江網路衛星授時伺服器雲空間 瀏覽:497
寶塔加密方式 瀏覽:217
linux環境變數的路徑 瀏覽:749
粉筆緩存的視頻在手機哪個文件夾 瀏覽:680
港片尺度大 瀏覽:373
女主胸大的H電影 瀏覽:877
小女孩那個電影叫什麼 瀏覽:58
中越戰爭電影在哪看 瀏覽:896