導航:首頁 > 配伺服器 > 伺服器如何支持多語言客戶端

伺服器如何支持多語言客戶端

發布時間:2022-04-19 23:24:23

Ⅰ B/S結構的軟體伺服器端與客戶端能不能用不同的語言編寫代碼

能,只要遵循相同的網路協議就可以。網路編程一般用socket套接字實現,凡是支持socket的語言都可以用於編寫。

Ⅱ 易語言怎麼接入多個客戶端

還是建議用遠程服務支持庫比較穩定些。

你運氣不錯,我最近也在寫一款遠程服務支持庫的軟體。

我習慣用非同步發送。

我的解決方案就是,寫一個exe啟動器,啟動器負責服務端的埠配置,和線程池大小配置。

然後寫一個專門負責通訊的dll,在該dll內用遠程服務支持庫,寫服務端。

另外:比如注冊dll、登錄dll、在線處理dll、這些都是獨立寫成一個dll的。

啟動器點擊啟動後,開始調用通訊dll,然後依次調用注冊dll、登錄dll、在線dll。

用戶發送數據過來,首先進入通訊dll,然後通訊dll判斷,該數據是哪一類的數據,然後在數據尾部加入一個句柄,這個句柄就是用於處理完數據後,回復給客戶端的。

通訊dll做完判斷數據,加入句柄後,再根據判斷的結果,將其傳遞給對應的dll去處理,例:結果為注冊數據,則傳遞給注冊dll去處理。

在這里,處理dll還是務必寫上一個等等和緩存區,以便這里數據沒有處理完,後面數據又傳了進來。

嗯,這里是純手打的,打了這么多字,有苦勞吧???

如果不懂,你可以加我q,我把我的一些經驗心得教給你。我的帳號,就能搜到我的q。

Ⅲ 如何實現一個伺服器與多個客戶端連接

TCP協議:
伺服器端:tcp_server.c

[cpp] view plainprint?
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
int server_sockfd;//伺服器端套接字
int client_sockfd;//客戶端套接字
int len;
struct sockaddr_in my_addr; //伺服器網路地址結構體
struct sockaddr_in remote_addr; //客戶端網路地址結構體
int sin_size;
char buf[BUFSIZ]; //數據傳送的緩沖區
memset(&my_addr,0,sizeof(my_addr)); //數據初始化--清零
my_addr.sin_family=AF_INET; //設置為IP通信
my_addr.sin_addr.s_addr=INADDR_ANY;//伺服器IP地址--允許連接到所有本地地址上
my_addr.sin_port=htons(8000); //伺服器埠號

/*創建伺服器端套接字--IPv4協議,面向連接通信,TCP協議*/
if((server_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return 1;
}

/*將套接字綁定到伺服器的網路地址上*/
if (bind(server_sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0)
{
perror("bind");
return 1;
}

/*監聽連接請求--監聽隊列長度為5*/
listen(server_sockfd,5);

sin_size=sizeof(struct sockaddr_in);

/*等待客戶端連接請求到達*/
if((client_sockfd=accept(server_sockfd,(struct sockaddr *)&remote_addr,&sin_size))<0)
{
perror("accept");
return 1;
}
printf("accept client %s/n",inet_ntoa(remote_addr.sin_addr));
len=send(client_sockfd,"Welcome to my server/n",21,0);//發送歡迎信息

/*接收客戶端的數據並將其發送給客戶端--recv返回接收到的位元組數,send返回發送的位元組數*/
while((len=recv(client_sockfd,buf,BUFSIZ,0))>0))
{
buf[len]='/0';
printf("%s/n",buf);
if(send(client_sockfd,buf,len,0)<0)
{
perror("write");
return 1;
}
}
close(client_sockfd);
close(server_sockfd);
return 0;
}
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
int server_sockfd;//伺服器端套接字
int client_sockfd;//客戶端套接字
int len;
struct sockaddr_in my_addr; //伺服器網路地址結構體
struct sockaddr_in remote_addr; //客戶端網路地址結構體
int sin_size;
char buf[BUFSIZ]; //數據傳送的緩沖區
memset(&my_addr,0,sizeof(my_addr)); //數據初始化--清零
my_addr.sin_family=AF_INET; //設置為IP通信
my_addr.sin_addr.s_addr=INADDR_ANY;//伺服器IP地址--允許連接到所有本地地址上
my_addr.sin_port=htons(8000); //伺服器埠號

/*創建伺服器端套接字--IPv4協議,面向連接通信,TCP協議*/
if((server_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return 1;
}

/*將套接字綁定到伺服器的網路地址上*/
if (bind(server_sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0)
{
perror("bind");
return 1;
}

/*監聽連接請求--監聽隊列長度為5*/
listen(server_sockfd,5);

sin_size=sizeof(struct sockaddr_in);

/*等待客戶端連接請求到達*/
if((client_sockfd=accept(server_sockfd,(struct sockaddr *)&remote_addr,&sin_size))<0)
{
perror("accept");
return 1;
}
printf("accept client %s/n",inet_ntoa(remote_addr.sin_addr));
len=send(client_sockfd,"Welcome to my server/n",21,0);//發送歡迎信息

/*接收客戶端的數據並將其發送給客戶端--recv返回接收到的位元組數,send返回發送的位元組數*/
while((len=recv(client_sockfd,buf,BUFSIZ,0))>0))
{
buf[len]='/0';
printf("%s/n",buf);
if(send(client_sockfd,buf,len,0)<0)
{
perror("write");
return 1;
}
}
close(client_sockfd);
close(server_sockfd);
return 0;
}

TCP協議:

客戶端:tcp_client.c
[c-sharp] view plainprint?
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
int client_sockfd;
int len;
struct sockaddr_in remote_addr; //伺服器端網路地址結構體
char buf[BUFSIZ]; //數據傳送的緩沖區
memset(&remote_addr,0,sizeof(remote_addr)); //數據初始化--清零
remote_addr.sin_family=AF_INET; //設置為IP通信
remote_addr.sin_addr.s_addr=inet_addr("127.0.0.1");//伺服器IP地址
remote_addr.sin_port=htons(8000); //伺服器埠號

/*創建客戶端套接字--IPv4協議,面向連接通信,TCP協議*/
if((client_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return 1;
}

/*將套接字綁定到伺服器的網路地址上*/
if(connect(client_sockfd,(struct sockaddr *)&remote_addr,sizeof(struct sockaddr))<0)
{
perror("connect");
return 1;
}
printf("connected to server/n");
len=recv(client_sockfd,buf,BUFSIZ,0);//接收伺服器端信息
buf[len]='/0';
printf("%s",buf); //列印伺服器端信息

/*循環的發送接收信息並列印接收信息--recv返回接收到的位元組數,send返回發送的位元組數*/
while(1)
{
printf("Enter string to send:");
scanf("%s",buf);
if(!strcmp(buf,"quit")
break;
len=send(client_sockfd,buf,strlen(buf),0);
len=recv(client_sockfd,buf,BUFSIZ,0);
buf[len]='/0';
printf("received:%s/n",buf);
}
close(client_sockfd);//關閉套接字
return 0;
}
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
int client_sockfd;
int len;
struct sockaddr_in remote_addr; //伺服器端網路地址結構體
char buf[BUFSIZ]; //數據傳送的緩沖區
memset(&remote_addr,0,sizeof(remote_addr)); //數據初始化--清零
remote_addr.sin_family=AF_INET; //設置為IP通信
remote_addr.sin_addr.s_addr=inet_addr("127.0.0.1");//伺服器IP地址
remote_addr.sin_port=htons(8000); //伺服器埠號

/*創建客戶端套接字--IPv4協議,面向連接通信,TCP協議*/
if((client_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return 1;
}

/*將套接字綁定到伺服器的網路地址上*/
if(connect(client_sockfd,(struct sockaddr *)&remote_addr,sizeof(struct sockaddr))<0)
{
perror("connect");
return 1;
}
printf("connected to server/n");
len=recv(client_sockfd,buf,BUFSIZ,0);//接收伺服器端信息
buf[len]='/0';
printf("%s",buf); //列印伺服器端信息

/*循環的發送接收信息並列印接收信息--recv返回接收到的位元組數,send返回發送的位元組數*/
while(1)
{
printf("Enter string to send:");
scanf("%s",buf);
if(!strcmp(buf,"quit")
break;
len=send(client_sockfd,buf,strlen(buf),0);
len=recv(client_sockfd,buf,BUFSIZ,0);
buf[len]='/0';
printf("received:%s/n",buf);
}
close(client_sockfd);//關閉套接字
return 0;
}

UDP協議:
伺服器端:udp_server.c

[cpp] view plainprint?
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
int server_sockfd;
int len;
struct sockaddr_in my_addr; //伺服器網路地址結構體
struct sockaddr_in remote_addr; //客戶端網路地址結構體
int sin_size;
char buf[BUFSIZ]; //數據傳送的緩沖區
memset(&my_addr,0,sizeof(my_addr)); //數據初始化--清零
my_addr.sin_family=AF_INET; //設置為IP通信
my_addr.sin_addr.s_addr=INADDR_ANY;//伺服器IP地址--允許連接到所有本地地址上
my_addr.sin_port=htons(8000); //伺服器埠號

/*創建伺服器端套接字--IPv4協議,面向無連接通信,UDP協議*/
if((server_sockfd=socket(PF_INET,SOCK_DGRAM,0))<0)
{
perror("socket");
return 1;
}

/*將套接字綁定到伺服器的網路地址上*/
if (bind(server_sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0)
{
perror("bind");
return 1;
}
sin_size=sizeof(struct sockaddr_in);
printf("waiting for a packet.../n");

/*接收客戶端的數據並將其發送給客戶端--recvfrom是無連接的*/
if((len=recvfrom(server_sockfd,buf,BUFSIZ,0,(struct sockaddr *)&remote_addr,&sin_size))<0)
{
perror("recvfrom");
return 1;
}
printf("received packet from %s:/n",inet_ntoa(remote_addr.sin_addr));
buf[len]='/0';
printf("contents: %s/n",buf);
close(server_sockfd);
return 0;
}
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
int server_sockfd;
int len;
struct sockaddr_in my_addr; //伺服器網路地址結構體
struct sockaddr_in remote_addr; //客戶端網路地址結構體
int sin_size;
char buf[BUFSIZ]; //數據傳送的緩沖區
memset(&my_addr,0,sizeof(my_addr)); //數據初始化--清零
my_addr.sin_family=AF_INET; //設置為IP通信
my_addr.sin_addr.s_addr=INADDR_ANY;//伺服器IP地址--允許連接到所有本地地址上
my_addr.sin_port=htons(8000); //伺服器埠號

/*創建伺服器端套接字--IPv4協議,面向無連接通信,UDP協議*/
if((server_sockfd=socket(PF_INET,SOCK_DGRAM,0))<0)
{
perror("socket");
return 1;
}

/*將套接字綁定到伺服器的網路地址上*/
if (bind(server_sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0)
{
perror("bind");
return 1;
}
sin_size=sizeof(struct sockaddr_in);
printf("waiting for a packet.../n");

/*接收客戶端的數據並將其發送給客戶端--recvfrom是無連接的*/
if((len=recvfrom(server_sockfd,buf,BUFSIZ,0,(struct sockaddr *)&remote_addr,&sin_size))<0)
{
perror("recvfrom");
return 1;
}
printf("received packet from %s:/n",inet_ntoa(remote_addr.sin_addr));
buf[len]='/0';
printf("contents: %s/n",buf);
close(server_sockfd);
return 0;
}

Ⅳ 易語言伺服器和多客戶端連接問題

如果是正版的話是有限制客戶端數量的,客戶端不一樣價格也不一樣,非正版本的就不一樣了,希望對你有所幫助~~~

Ⅳ 單服務端、多客戶端開發使用方式

C/S B/S
C/S結構,即Client/Server(客戶機/伺服器)結構,是大家熟知的軟體系統體系結構,通過將任務合理分配到Client端和Server端,降低了系統的通訊開銷,可以充分利用兩端硬體環境的優勢。早期的軟體系統多以此作為首選設計標准。。
B/S結構,即Browser/Server(瀏覽器/伺服器)結構,是隨著Internet技術的興起,對C/S結構的一種變化或者改進的結構。在這種結構下,用戶界面完全通過WWW瀏覽器實現,一部分事務邏輯在前端實現,但是主要事務邏輯在伺服器端實現,形成所謂3-tier結構。B/S結構,主要是利用了不斷成熟的WWW瀏覽器技術,結合瀏覽器的多種Script語言(VBScript、JavaScript…)和ActiveX技術,用通用瀏覽器就實現了原來需要復雜專用軟體才能實現的強大功能,並節約了開發成本,是一種全新的軟體系統構造技術。隨著Windows 98/Windows 2000將瀏覽器技術植入操作系統內部,這種結構更成為當今應用軟體的首選體系結構。
C/S 與 B/S 區別:
Client/Server是建立在區域網的基礎上的.Browser/Server是建立在廣域網的基礎上的.
1.硬體環境不同:
C/S 一般建立在專用的網路上, 小范圍里的網路環境, 區域網之間再通過專門伺服器提供連接和數據交換服務.
B/S 建立在廣域網之上的, 不必是專門的網路硬體環境,例與電話上網, 租用設備. 信息自己管理. 有比C/S更強的適應范圍, 一般只要有操作系統和瀏覽器就行
2.對安全要求不同
C/S 一般面向相對固定的用戶群, 對信息安全的控制能力很強. 一般高度機密的信息系統採用C/S 結構適宜. 可以通過B/S發布部分可公開信息.
B/S 建立在廣域網之上, 對安全的控制能力相對弱, 面向是不可知的用戶群.
3.對程序架構不同
C/S 程序可以更加註重流程, 可以對許可權多層次校驗, 對系統運行速度可以較少考慮.
B/S 對安全以及訪問速度的多重的考慮, 建立在需要更加優化的基礎之上. 比C/S有更高的要求 B/S結構的程序架構是發展的趨勢, 從MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持網路的構件搭建的系統. SUN 和IBM推的JavaBean 構件技術等,使 B/S更加成熟.
4.軟體重用不同
C/S 程序可以不可避免的整體性考慮, 構件的重用性不如在B/S要求下的構件的重用性好.
B/S 對的多重結構,要求構件相對獨立的功能. 能夠相對較好的重用.就入買來的餐桌可以再利用,而不是做在牆上的石頭桌子
5.系統維護不同
系統維護是軟體生存周期中,開銷大, -------重要
C/S 程序由於整體性, 必須整體考察, 處理出現的問題以及系統升級. 升級難. 可能是再做一個全新的系統
B/S 構件組成,方面構件個別的更換,實現系統的無縫升級. 系統維護開銷減到最小.用戶從網上自己下載安裝就可以實現升級.
6.處理問題不同
C/S 程序可以處理用戶面固定, 並且在相同區域, 安全要求高需求, 與操作系統相關. 應該都是相同的系統
B/S 建立在廣域網上, 面向不同的用戶群, 分散地域, 這是C/S無法作到的. 與操作系統平台關系最小.
7.用戶介面不同
C/S 多是建立的Window平台上,表現方法有限,對程序員普遍要求較高
B/S 建立在瀏覽器上, 有更加豐富和生動的表現方式與用戶交流. 並且大部分難度減低,減低開發成本.
8.信息流不同
C/S 程序一般是典型的中央集權的機械式處理, 交互性相對低
B/S 信息流向可變化, B-B B-C B-G等信息、流向的變化, 更象交易中心

Ⅵ 一個伺服器可以有兩個語言環境么

完全可以.伺服器是獨立的硬體設備,用戶可以根據需要安裝各種操作系統以及配置任何網站環境,當然也可以多種網站環境共存.比如說IIS+PHP+MYSQL的環境.即可支持ASP網站又支持PHP的網站.另外建議在配置環境時只需要選擇用的上的安裝即可.環境並非安裝的越全越好.因為每安裝一種環境就會佔用一部分伺服器的資源.從而導致伺服器的性能下降.
個人建議.希望對你有幫助.有伺服器問題需要幫忙的可以找我.

Ⅶ 關於在linux下用C語言實現多客戶端和伺服器端聊天的實現!

你的意思是伺服器監聽同一埠,然後根據不同客戶端運行不同的伺服器程序?如果是,自然少不了select或if-elseif-then

Ⅷ 如何實現網站的多語言版本

多語言網站,顧名思義就是能夠以多種語言(而不是單種語言)為用戶提供信息服務,讓使用不同語言的用戶都能夠從同個網站獲得內容相同的信息。

多語言網站實現方案

1,靜態:就是為每種語言分別准備一套頁面文件,要麼通過文件後綴名來區分不同語言,要麼通過子目錄來區分不同語言。

例如對於首頁文件index_en.htm提供英語界面,index_gb.htm提供簡體中文界面,index_big.htm提供繁體中文界面,或者是en/index.htm提供英語界面,gb/index.htm提供簡體中文界面,big/index.htm提供繁體中文界面,一旦用戶選擇了需要的語言後,自動跳轉到相應的頁面,首頁以下其他鏈接也是按照同樣方式處理。從維護的角度來看,通過子目錄比通過文件後綴名來區分不同語言版本顯得要簡單明了。

2,動態:站點內所有頁面文件都是動態頁面文件(PHP,ASP等)而不是靜態頁面文件,在需要輸出語言文字的地方統一採用語言變數來表示,這些語言變數可以根據用戶選擇不同的語言賦予不同的值,從而能夠實現在不同的語言環境下輸出不同的文字。

例如:語言變數ln_name,當用戶選擇的語言是英語時賦值為「Name」,當用戶選擇的語言是簡體中文時賦值為「姓名」,這樣就可以適應不同語言時的輸出。

採用靜態方式的優點是頁面直接輸出到客戶端,不需要在伺服器上運行,佔用伺服器的資源比較少,系統能夠支持的並發連接數較多,缺點是要為每種語言製作一套頁面文件,很多內容即使是和語言無關的也要分不同語言來存儲,因此佔用的存儲空間較多。

採用動態方式和靜態方式的優缺點正好相反,它的優點是動態頁面文件只有一套,不同語言的文字使用語言變數來存儲,和語言無關的內容只存儲一份,佔用的存儲空間較少,並且擴展新語言比較容易,缺點需要在伺服器上運行,然後把結果輸入到客戶端,佔用伺服器的資源比較多,系統能夠支持的並發連接數較少。

動態數據存貯涉及的一些技術問題

由於現在網站上動態應用日益增多,相當多的網站還會使用文件或者資料庫來存儲應用信息,因此如果文件或者資料庫中存儲的內容與語言相關時,還需要特別注意。對於存儲在資料庫中信息,可以採取以下幾種方式支持多語言:

1,在資料庫級別支持多語言:為每種語言建立獨立的資料庫,不同語言的用戶操作不同的資料庫。

2,在表級別支持多語言:為每種語言建立獨立的表,不同語言的用戶操作不同的表,但是它們在同一個資料庫中。

3,在欄位級別支持多語言:在同一個表中為每種語言建立獨立的欄位,不同語言的用戶操作不同的欄位,它們在同一個表中。

由於資料庫中有大量的信息(如標志,編碼,數字等)是用於內部處理使用的,與語言無關的,因此在資料庫級別支持多語言會導致空間的極大浪費,在欄位級別支持多語言最大的問題是一旦需要支持新的語言,由於需要修改表結構,維護起來非常麻煩,可擴展性不好。

相比之下,在表級別支持多語言比較好,因為並不是所有的表都需要支持多語言,對於與語言無關的表,不同語言的用戶共用一套,那些和語言相關的表根據支持語言的種類來建立,不同語言的用戶存取訪問不同的表格。這樣使得維護簡單,節省了存儲空間,即使是擴展起來也比較方便,只要把需要支持多語言的表,多建立一套即可。

還需要注意的問題是:有些表中某些欄位是不同語言版本的表共享的(例如庫存量),由於各種語言的表之間的相對獨立性,使得數據共享有些困難。解決的方法有兩個:

1,不同語言的表的共享欄位同步:也就是說,只要修改了其中一個表的共享欄位,其他語言表中該欄位也作相應改變,實際上當不同語言的用戶同時訪問時處理還是比較麻煩的,並且擴充新語言時修改工作比較大。

2,增加一個新的表:把所有語言共享的欄位(例如貨物編號,產地編碼等)全部放在這個表,支持多語言的表只存放與各種語言相關的欄位。不同語言的用戶在使用資料庫時,需要操作兩個數據表。
比較而言,第二種方法比較簡單,並且效率比較高,維護也比較方便。

應用字元集的選擇

一個定位於不同語言國家的企業網站勢必需要提供多種語言版本的產品和銷售信息來滿足其世界各地使用不同語言的客戶和合作夥伴,其中包括法語、德語、義大利語、葡萄牙語、西班牙語、阿拉伯語等等。但有一個問題卻極易被網站設計者們所忽略。這就是網站的字元集設置問題。

一般我們使用的是簡體中文(GB2312)字元集,而對多語言網站來說,中文字元集卻可能會使你辛辛苦苦的努力功虧一簣。原因很簡單:就是這個毫不起眼的小小字元集在作怪。

計算機應用領域中存在著幾十種互不相同的字元集,而不同語言客戶在瀏覽不同語言網頁時,往往會因為相互間所使用字元集無法兼容而出現亂碼情況。我們在瀏覽國外一些網站時,往往也會出現為了能正常地看到網站上的信息而不得不在各種字元集之間來回切換的情況。

試想一下:如果一個網站提供了中,英,法,德等多種語言版本的內容,內容全之又全,設計美侖美奐。我們在中文編碼環境下瀏覽這些非中文版本的頁面覺得非常完美,現在一個法國客戶對你的產品發生了興趣,當他進到法語版面一看—亂碼多多,甚至可能整個版面都一塌里糊塗。你的網站再下大工夫又有什麼意義呢?

所以對提供了多語言版本的網站來說,Unicode字元集應該是最理想的選擇。它是一種雙位元組編碼機制的字元集,不管是東方文字還是西方文字,在Unicode中一律用兩個位元組來表示,因而至少可以定義65536個不同的字元,幾乎可以涵蓋世界上目前所有通用的語言的每一種字元。 所以在設計和開發多語言網站時,一定要注意先把非中文頁面的字元集定義為「utf-8」格式。

這一步非常重要,原因在於若等頁面做好之後再更改字元集設置,可說是一件非常非常吃力不討好的工作,有時候甚至可能需要從頭再來,重新輸入網站的文字內容。

HTML中的META標簽:

<META HTTP-EQUIV=「Content-Type」 CONTENT=「text/html; CHARSET=字元集">

不寫,根據瀏覽器默認字元集顯示
charset=gb2312 簡體中文
charset=big5 繁體中文
charset=EUC_KR 韓語
charset=Shift_JIS 或 EUC_JP 日語
charset= KOI8-R / Windows-1251 俄語
charset=iso-8859-1 西歐語系(荷蘭語,英語,法語,德語,義大利語,挪威語,葡萄牙語,瑞士語.等十八種語言) http://www.microsoft.com/
charset=iso-8859-2 中歐語系
charset=iso-8859-5 斯拉夫語系(保加利亞語,Byelorussian語,馬其頓語,俄語,塞爾維亞語,烏克蘭語等)
charset=uft-8 unicode多語言

ASP與腳本引擎頁碼的概念
由於我們傳統使用的內碼像Big5,GB2312與unicode並不是一一對應,故兩者之間的轉換要靠codepage(頁碼)來實現
<%@ Language=VBScript CodePage=xxx%>

不寫,根據伺服器端解析引擎默認代碼頁自動解析並返回瀏覽器。
如果製作的網頁腳本與WEB服務端的默認代碼頁不同,則必須指明代碼頁:
codepage=936 簡體中文GBK
codepage=950 繁體中文BIG5
codepage=437 美國/加拿大英語
codepage=932 日文
codepage=949 韓文
codepage=866 俄文
codepage=65001 unicode UFT-8

建議採用utf8的靜態和動態文檔。即:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Ⅸ 請問易語言多伺服器組件和多客戶端怎麼實現通訊呢 求方法 謝謝

通過中轉伺服器。
伺服器和客戶端是一對多的關系。即,一個客戶端只能連接一個伺服器,一個伺服器可以被多個客戶端連接。

所以,多個客戶端之間的通訊,可以通過他們連接的共同伺服器來完成。
客戶端1和客戶端2都連接了伺服器1,那麼客戶端1可以發送消息到伺服器1,讓伺服器1把消息發給客戶端2。

一個程序里可以啟動多個客戶端或伺服器,所以程序是他包含的客戶端或伺服器老大。
比如,一個程序里有2個伺服器,分別有多個客戶端與這2個伺服器中之一連接。那麼,比如有2個客戶端就算他們連接的分別是這個程序里的不同伺服器,但程序可以通過調用實現這2個客戶端通訊。客戶端1與程序里伺服器1連接,客戶端2與程序里伺服器2連接,那麼收到客戶端1發送數據到伺服器1,程序收到後通過調用伺服器2把它發給客戶端2。

每端都有客戶和伺服器,那麼這樣也可以建立雙向連接。客戶端連接伺服器後,讓伺服器里的客戶端也連接客戶端。當然這種設計少。但如果多個伺服器在一個程序里通過程序調用即可,如果不在一個裡面,那麼伺服器端放個客戶與另一個伺服器連接,來建立伺服器到伺服器的通訊。

說了這么多,應該明白了。就是多建連接線路的問題。

閱讀全文

與伺服器如何支持多語言客戶端相關的資料

熱點內容
Python可以去什麼崗位 瀏覽:824
邪教love的解壓縮密碼 瀏覽:862
android開發手勢密碼 瀏覽:84
文件夾內總頁數 瀏覽:639
米3怎麼升級到安卓系統 瀏覽:40
安卓介面以外還有什麼介面 瀏覽:176
伺服器怎麼修改文件 瀏覽:931
看pdf用什麼軟體 瀏覽:947
生存戰爭中怎麼加入伺服器 瀏覽:492
壓縮面膜能幹嘛 瀏覽:8
猜測memberphp 瀏覽:486
江淮瑞風壓縮機斷斷續續空調不製冷 瀏覽:440
程序員有時光機你最想干什麼 瀏覽:673
app資源庫怎麼設置字體 瀏覽:33
擊潰外國公司伺服器是什麼水平 瀏覽:218
單片機怎麼檢查管腳pwm 瀏覽:81
核心源碼怎麼解讀 瀏覽:400
自己的伺服器ip地址怎麼查詢 瀏覽:968
騰訊無量編譯器 瀏覽:290
武器換演算法傷 瀏覽:473