導航:首頁 > 配伺服器 > 淘寶客戶端和伺服器如何通訊

淘寶客戶端和伺服器如何通訊

發布時間:2022-08-17 11:03:01

A. 如何保持客戶端和伺服器之間的連接

telnet是微軟出的,它是一項服務。所謂的客戶端和服務端是相對於主機的,也就是說客戶端和服務端可以是不同的主機。這次主機間通信A是客戶端B是服務端,下次通訊就可能反過來A是服務端B是客戶端。
所以你所謂的「在客戶端編寫程序」只能在微軟公司完成。微軟把telnet做成什麼樣你就只能怎麼用。微軟規定telnet一分鍾沒有操作便自動斷線,那麼你就只能接受。
就像你用QQ似的,QQ規定隱身之後頭像是灰的,你再怎麼編寫腳本也只能是灰的,除非你入侵QQ後台。不過這基本是不可能的。
望採納。

B. 求助 易語言如何實現客戶端和服務端的雙向通信

只能給思路!希望對你有幫助!易語言基本組件1和基本組件2組件裡面有:客戶端組件和伺服器組件。用他們編程就可以實現客戶端和服務端通信!你可以在同一台機器上測試,就是說你分別編寫好服務端代碼和客戶端代碼可以先在同一台電腦上測試!具體操作你得學習易語言編程!

C. 客戶端與伺服器端的通訊,C++書寫步驟。

C++通過socket編程實現服務端與客戶端的通訊,代碼如下(個人環境下測試正常,如果遇到運行send發送報錯,請檢查伺服器埠是否被佔用,調試的時候請先運行服務端程序在運行客服端,一定要載入庫函數ws2_32.lib,發送字元時應該多加一個空字元作為結束字元):

伺服器端程序:

//Server.cpp:.
#include"winsock2.h"
#pragmacomment(lib,"ws2_32.lib")
#include<iostream>
usingnamespacestd;
intmain(intargc,char*argv[])
{
constintBUF_SIZE=64;
WSADATAwsd;//WSADATA變數
SOCKETsServer;//伺服器套接字
SOCKETsClient;//客戶端套接字
SOCKADDR_INaddrServ;;//伺服器地址
charbuf[BUF_SIZE];//接收數據緩沖區
charsendBuf[BUF_SIZE];//返回給客戶端得數據
intretVal;//返回值
//初始化套結字動態庫
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
cout<<"WSAStartupfailed!"<<endl;
return1;
}

//創建套接字
sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==sServer)
{
cout<<"socketfailed!"<<endl;
WSACleanup();//釋放套接字資源;
return-1;
}

//伺服器套接字地址
addrServ.sin_family=AF_INET;
addrServ.sin_port=htons(4999);
addrServ.sin_addr.s_addr=INADDR_ANY;
//綁定套接字
retVal=bind(sServer,(LPSOCKADDR)&addrServ,sizeof(SOCKADDR_IN));
if(SOCKET_ERROR==retVal)
{
cout<<"bindfailed!"<<endl;
closesocket(sServer);//關閉套接字
WSACleanup();//釋放套接字資源;
return-1;
}

//開始監聽
retVal=listen(sServer,1);
if(SOCKET_ERROR==retVal)
{
cout<<"listenfailed!"<<endl;
closesocket(sServer);//關閉套接字
WSACleanup();//釋放套接字資源;
return-1;
}

//接受客戶端請求
sockaddr_inaddrClient;
intaddrClientlen=sizeof(addrClient);
sClient=accept(sServer,(sockaddrFAR*)&addrClient,&addrClientlen);
if(INVALID_SOCKET==sClient)
{
cout<<"acceptfailed!"<<endl;
closesocket(sServer);//關閉套接字
WSACleanup();//釋放套接字資源;
return-1;
}

while(true)
{
//接收客戶端數據
ZeroMemory(buf,BUF_SIZE);
retVal=recv(sClient,buf,BUF_SIZE,0);
if(SOCKET_ERROR==retVal)
{
cout<<"recvfailed!"<<endl;
closesocket(sServer);//關閉套接字
closesocket(sClient);//關閉套接字
WSACleanup();//釋放套接字資源;
return-1;
}
if(buf[0]=='0')
break;
cout<<"客戶端發送的數據:"<<buf<<endl;

cout<<"向客戶端發送數據:";
cin>>sendBuf;

send(sClient,sendBuf,strlen(sendBuf),0);
}

//退出
closesocket(sServer);//關閉套接字
closesocket(sClient);//關閉套接字
WSACleanup();//釋放套接字資源;

return0;
}

客戶端程序:

#include"winsock2.h"
#include<iostream>
#pragmacomment(lib,"ws2_32.lib")

usingnamespacestd;
BOOLRecvLine(SOCKETs,char*buf);//讀取一行數據

intmain(intargc,char*argv[])
{
constintBUF_SIZE=64;

WSADATAwsd;//WSADATA變數
SOCKETsHost;//伺服器套接字
SOCKADDR_INservAddr;//伺服器地址
charbuf[BUF_SIZE];//接收數據緩沖區
charbufRecv[BUF_SIZE];
intretVal;//返回值
//初始化套結字動態庫
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
cout<<"WSAStartupfailed!"<<endl;
return-1;
}
//創建套接字
sHost=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==sHost)
{
cout<<"socketfailed!"<<endl;
WSACleanup();//釋放套接字資源
return-1;
}

//設置伺服器地址和埠
servAddr.sin_family=AF_INET;
servAddr.sin_addr.s_addr=inet_addr("127.0.0.1");
servAddr.sin_port=htons((short)4999);
intnServAddlen=sizeof(servAddr);

//連接伺服器
retVal=connect(sHost,(LPSOCKADDR)&servAddr,sizeof(servAddr));
if(SOCKET_ERROR==retVal)
{
cout<<"connectfailed!"<<endl;
closesocket(sHost);//關閉套接字
WSACleanup();//釋放套接字資源
return-1;
}
while(true)
{
//向伺服器發送數據
ZeroMemory(buf,BUF_SIZE);
cout<<"向伺服器發送數據:";
cin>>buf;
retVal=send(sHost,buf,strlen(buf),0);
if(SOCKET_ERROR==retVal)
{
cout<<"sendfailed!"<<endl;
closesocket(sHost);//關閉套接字
WSACleanup();//釋放套接字資源
return-1;
}
//RecvLine(sHost,bufRecv);
ZeroMemory(bufRecv,BUF_SIZE);
recv(sHost,bufRecv,BUF_SIZE,0);//接收伺服器端的數據,只接收5個字元
cout<<endl<<"從伺服器接收數據:"<<bufRecv;
cout<<" ";
}
//退出
closesocket(sHost);//關閉套接字
WSACleanup();//釋放套接字資源
return0;
}

D. 如何在客戶端上建立一個Socket與伺服器端連接,包括連接的函數

進入mysql,創建一個新用戶xuys:
格式:grant 許可權 on 資料庫名.表名 用戶@登錄主機 identified by "用戶密碼";
grant select,update,insert,delete on *.* to [email protected] identified by "xuys1234";
查看結果,執行:
use mysql;
select host,user,password from user;
可以看到在user表中已有剛才創建的xuys用戶。host欄位表示登錄的主機,其值可以用IP,也可用主機名,
將host欄位的值改為%就表示在任何客戶端機器上能以xuys用戶登錄到mysql伺服器,建議在開發時設為%。
update user set host = '%' where user = 'xuys';
2、 ./mysqladmin -uroot -p21century reload
./mysqladmin -uroot -p21century shutdown
3、./mysqld_safe --user-root &
記住:對授權表的任何修改都需要重新reload,即執行第3步。

如果經過以上3個步驟還是無法從客戶端連接,請執行以下操作,在mysql資料庫的db表中插入一條記錄:
use mysql;
insert into db values('192.168.88.234','%','xuys','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
update db set host = '%' where user = 'xuys';
重復執行上面的第2、3步。

E. 外網伺服器如何與內網客戶端通信

我們上網使用的是TCP/IP協議,通訊時使用的主要包括TCP協議和UDP協議,具體有什麼區別就不多說了,TCP也好UDP也好,為了區分接受的對象,都包含了叫做埠的一個標示,你去連接QQ時,會使用一個埠,包括你的IP地址、協議(TCP、UDP)、埠,構成一個應用連接,發出數據的也會包括這些內容,到路由器轉發到Internet時,會進行NAT,IP地址轉換,將內部地址轉換成Internet上的公用地址(一般我們使用私用地址,怎麼劃分不多說),路由器會記住你的IP、協議及埠號,並將你的地址用路由器的地址、埠代替,然後傳輸到QQ伺服器;別人給你的消息,QQ伺服器會順著你的這個連接,將數據發回到路由器,路由器根據協議及埠,找到你的IP、協議、埠,將數據包重新包裝一下,發回到你的機器。

F. 進程之間的客戶端與服務端是如何實現通訊的

首先,為了便於理解,我們一般把網路分為多個層次,這個層次的概念是很重要的基礎概念,你可以參考閱讀經典的謝希仁老師翻譯的《計算機網路》。 在進程之間的網路通信一般都是在「網路層」即IP層,我們編寫程序一般也都是基於這個層次或者這個層次之上的傳輸層或者應用層。語言(實際上是操作系統和庫函數)提供了封裝好的函數,讓我們可以不用關心鏈路層以及物理層的細節。 下面逐一回答你的問題: 1)初始化網路環境是什麼意思,有什麼作用? 為了建立通信連接,我們需要明確當前的網路環境是怎樣的,因為和單機系統的進程通信不同,網路進程間通信比較復雜,而且操作系統支持的網路協議也會很多,不同協議的工作方式不同,地址格式也不同。為了解決多重協議的識別問題,我們必須引入一些用於區分的概念並對其初始化。 2)套接字的意思和作用是什麼? 套接字提供了對網路連接的一系列封裝——雖然你可以自己寫,但完全沒有必要不是么?它根據指定的地址族、數據類型和協議來分配一個套介面的描述字及其所用的資源。例如TCP/IP的socket提供三種類型套接字(流式、數據報、原始),分別對應面向連接的服務(例如FTP)、無連接服務(例如NFS)和較底層的連接服務(例如IP或者自定義協議),你可以基於套接字提供的封裝比較方便的實現網路連接服務。 在IP層次以上網路通信的基本原理和電話或者電報的基本原理是非常相近的。TCP連接類似電話,UDP連接類似電報。 下面我以一些代碼片段(注意是幫助理解的片段,不能編譯執行)簡單地對其進行類比: fd = socket(AF_INET, SOCK_STREAM, 0); address.sin_family = AF_INET; address.sin_addr.s_addr = htonl(INADDR_ANY); address.sin_port = htons(1234); address_len = sizeof(address); //這就是在初始化網路環境,類似於你朋友買了一個電話,同時到電信公司申請了號碼,然後登記的分機是1234 bind(fd, (struct sockaddr *)&address, address_len); //好了,這是做了一個bind(綁定),類似於電信公司把電話號碼和你朋友家的哪個埠線連上了。 listenfd = listen(fd, 64) while(1){ ....一系列等待客戶端的操作,從略 } //這里在伺服器端一般會有一個無限循環,伺服器會一直等待來自客戶端的消息,類似於你朋友一直在等待你的電話。客戶端,類似的也有買電話(socket創建)和初始化,我就不寫了,預先設定好你要撥打的分機號碼是1234 rtval = connect(fd, (struct sockaddr *)&address, address_len); //上面的語句表示開始撥打電話了: //如果你的朋友接了電話,通話建立了(上面語句的返回值rtval不為-1),你就可以講話: writen(fd, (void *)data, strlen(data)); //對方講話,你聽: len = readline(fd, (void *)data2, 100); //講完了,掛電話,類似於下面的語句: close(fd); 整體情況大概就是這樣,所以可以看到計算機的實現和日常生活是很接近的!希望這可以幫助你理解網路通信。 最後建議閱讀TCP/IP詳解之卷2(實現),裡面很多例子不長但很經典,對於打好基礎很有幫助。

G. 網頁版QQ、MSN、淘寶旺旺聊天是怎麼實現的

不是,使用的COM+組件,就是安裝的時候會安裝一個Activex控制項,並注冊給你瀏覽器載入 你瀏覽器每次啟動都會載入這個控制項,當你需要進行在線聊天的時候,會在你機器上調用這個activex控制項與伺服器通訊(其實跟你啟動客戶端版本的聊天工具一樣,只不過不用載入那麼多的東西,只載入最基本的聊天功能就行了。)

H. 淘寶app是內網通信嗎

如果區域網傳文件,建議在伺服器上架設FTP伺服器,安全又高效。
因為運營商的各種cache會有bug。如果用http這會導致用戶穿越到別的賬戶身上,或者是搜索什麼的返回同一個關鍵字的結果之類的現象。當然可以通過http每次invalid cache,但這又是額外的開銷。

I. 易語言伺服器端跟客戶端通訊問題

你好,這個不需要映射,如果你是認真想做服務端和客戶端的話,請購買獨立ip的vps主機。淘寶上面有大把的。也就40塊錢一個月。
VPS主機要求如下:
1,vps必須是獨立IP
2,vps必須是windows系統
3,vps推薦購買香港機房的

買好獨立vps後,你會獲得一個獨享的公網IP,再在客戶端連接服務端裡面填寫好IP,再把伺服器放到vps上面打開運行,至此,服務端與客戶端通信成功。

不需要什麼映射埠,徒勞無功

解決問題不容易,回答更不容易,請採納。

J. 關於tcpip 網路編程中客戶端和伺服器的雙向通信

伺服器端與客戶端都使用監聽,客戶端要與服務端通訊的時候,客戶端會向服務端發送相關請求,並監聽。服務端一直在監聽,當收到請求後會返回相關信息給客戶端。跟打電話是一樣的。

閱讀全文

與淘寶客戶端和伺服器如何通訊相關的資料

熱點內容
單片機lcd漢字顯示 瀏覽:878
能夠識別中文的編譯器 瀏覽:60
androidlayout注釋 瀏覽:957
重啟手機命令 瀏覽:836
程序員那麼可愛男女主是誰 瀏覽:490
文件如何上傳到自己的伺服器 瀏覽:399
你用什麼app 瀏覽:224
安卓平板用什麼優化軟體 瀏覽:747
centos重新編譯程序 瀏覽:335
cocoapods命令 瀏覽:906
androidusb卸載 瀏覽:143
linux解壓縮軟體 瀏覽:143
ppt及備注轉pdf 瀏覽:564
ssh下載文件命令 瀏覽:821
程序員考MBA 瀏覽:265
國外加密鎖是什麼樣子 瀏覽:229
linuxhosts重啟 瀏覽:168
c語言編譯正確但是不能執行 瀏覽:856
編程素質教育代理 瀏覽:908
渴望力量程序員 瀏覽:370