導航:首頁 > 配伺服器 > 伺服器端如何編寫

伺服器端如何編寫

發布時間:2022-09-23 12:18:45

⑴ 怎麼寫一個QQ的伺服器端

怎麼能用MFC做伺服器呢!你要是想做一個簡單的即時通訊伺服器,我建議你在windows下用IOCP了,在linux下用epoll。這樣的話應該可以支持大幾百個人同時在線,最重要是業務邏輯不好寫,資料庫可以自己選一個,我們用的是oracle。qq現在的客戶端不是用的MFC,他們是調用自己寫的界面類庫,這么畫面更漂亮,不用太依賴微軟。

⑵ 如何寫游戲服務端

暈,貌似回答完了三年,不過樓上這位朋友不要誤導新人,服務端相比客戶端來說要簡單多了,首先,在程序構架上,服務端比客戶端相對簡單些,服務端只是收發數據,存儲數據,計算數據,但是客戶端在此基礎上還要有模型讀取和處理,雖然這么說,但是沒有幾年經驗的想寫服務端還是有很大難度的·········網上有很多SF之類的服務端源碼,並不完全是官方泄露的,也有很多是自己開發的,但是即便有人開發出來服務端,但是很少有人去寫客戶端。說到這兒,哪方面比較難應該清楚了吧·······

java 寫的dnp3協議的伺服器端,怎麼寫

<soapenv:Header/>
<soapenv:Body>
<api:getEmp>
<shopId>string</shopId>
</api:getEmp>
</soapenv:Body>
</soapenv:Envelope>
這個時SOAP協議的標准報文格式,客戶端只要發送這樣的報文給支持SOAP協議的webservice伺服器即可成功調用web service服務
服務端:部署服務只需要自己定義服務的介面和實現類,並用@webservice註解,通過endPoint類直接發布即可

⑷ 即時通訊工具伺服器端如何編寫和設置

不難,主要是定義好消息結構,然後分伺服器端和客戶端,伺服器端就是維護客戶列表,轉發通訊,客戶端其實也相當於伺服器端,當獲得用戶列表之後根據用戶在線狀態客戶和客戶可以直接通訊,不用伺服器轉發,除非其中一方不在線才需要伺服器轉發,視頻,語音都有現成的,通訊的時候就是把己方採集到的數據發送到對方那裡,然後對方負責顯示,通訊用udp吧,不建議用tcp,那個太佔用資源啦,人少還行,多了就卡死你,用標準的winsock控制項就行,實現不難,只要把通訊協議定好,其他就是圍繞數據的發送和接收的處理了,沒啥復雜的技術

⑸ socket通信伺服器端怎麼寫

Android客戶端與PC伺服器實現Socket通信(wifi)

本文介紹Android終端持續掃描AP信息並發送給伺服器端的實現。首先基於TCP協議在Android終端和PC兩端之間形成網路虛擬鏈路。使用ServerSocket創建TCP伺服器端,然後在Android客戶端使用Socket的構造器來連接伺服器。其中Android終端通過WIFI連接和PC處於同一區域網。
1.
PC伺服器啟用ServerSocket
兩個通信實體在建立虛擬鏈路之前,需要有一方先准備好,主動接受來自其他通信實體的連接請求。
使用ServerSocket對象監聽來自客戶端的Socket連接
//創建ServerSocket對象
//by wayne from www.cnblog.com/dwayne/

ServerSocket ss = new ServerSocket(30000);
//監聽來自客戶端的請求
while(true){
Socket s = ss.accept();

}

如果沒有連接,則將一直處於等待狀態。
當接收到連接請求後,獲取消息到輸入流,並保存到文件。
//接收客戶端消息
//by wayne from www.cnblog.com/dwayne/

BufferedReader in = new BufferedReader(new
InputStreamReader(client.getInputStream()));
String str;

BufferedWriter bw = new BufferedWriter(new FileWriter("D:/ApInfo"+ (i++)
+".txt"));
while ((str = in.readLine()) != null) {
System.out.println(str);
bw.write(str);
bw.newLine();
}

2.
Android終端使用Socket通信
客戶端使用Socket的構造器連接伺服器,指定伺服器IP和埠號就可以了。
Socket s = new
Socket(「192.168.1.100」, 30000);
這樣伺服器端的accept()方法就得到響應,從而向下執行,伺服器端和客戶端就形成了一對互相連接的Socket。再進行通信時就沒有伺服器和客戶端之分了,都是通過輸入輸出流進行通信。
詳細步驟
採用Handler和TimerTask來定時掃描AP信息並發送給伺服器端。
TimerTask規定了到達指定的時間所要進行的任務。
TimerTask task = new TimerTask(){

public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}

};
handler傳遞message內容:
Handler handler = new Handler(){

public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
// 執行定時器時間到了之後由handler傳遞的任務
break;
}
super.handleMessage(msg);
}

};
因為需要持續執行掃描任務,所以啟用新線程執行定時任務
//啟動單獨線程定時向伺服器發送AP信息
//by wayne from www.cnblogs.com/dwayne

new Thread(){

@Override
public void run() {
// TODO Auto-generated method stub
timer.schele(task, 2000,10000); //在2秒後每10秒執行一次定時器中的方法
}

}.start();
接下來掃描AP信息並發送給伺服器端,然後將結果保存。
WifiManager wifiManager=(WifiManager) getSystemService(WIFI_SERVICE);
wifiManager.startScan();
mWifiList = wifiManager.getScanResults();
由WifiManager說明可知,它可以用於處理已配置的網路,當前連接的網路及AP信息的掃描等情況。
This class provides the primary API for managing all aspects of
Wi-Fi connectivity. Get an instance of this class by calling
Context.getSystemService(Context.WIFI_SERVICE). It deals with several categories
of items:
The list of configured networks. The list can be viewed and updated, and
attributes of indivial entries can be modified.
The currently active Wi-Fi network, if any. Connectivity can be established
or torn down, and dynamic information about the state of the network can be
queried.
Results of access point scans, containing enough information to make
decisions about what access point to connect to.
It defines the names of various Intent actions that are broadcast upon any
sort of change in Wi-Fi state.
向伺服器發送消息:
socket = new Socket("192.168.1.211",30000);
//向伺服器端發送消息
PrintWriter out = new PrintWriter( new BufferedWriter( new
OutputStreamWriter(socket.getOutputStream())),true);
out.println(message);
其中message為獲取的AP信息
測試收到的信息格式為:
SSID: ICIS_LAB, BSSID: 1c:af:f7:9a:65:e4, capabilities:
[WPA-PSK-TKIP+CCMP], level: -80, frequency: 2

⑹ 如何用java編寫一個應用伺服器

使用servletsocket 和socket 就可以 伺服器端是多線程 對每一個訪問的socket分配一個線程 就可以 不過要限制線程數量 否則伺服器會崩的

⑺ 關於java,soap伺服器端的代碼怎麼寫

<soapenv:Header/>
<soapenv:Body>
<api:getEmp>
<shopId>string</shopId>
</api:getEmp>
</soapenv:Body>
</soapenv:Envelope>
這個時SOAP協議的標准報文格式,客戶端只要發送這樣的報文給支持SOAP協議的webservice伺服器即可成功調用web service服務
服務端:部署服務只需要自己定義服務的介面和實現類,並用@webservice註解,通過endPoint類直接發布即可

⑻ 如何寫一個簡單的HTTP伺服器

本Guide利用Eclipse及Ant建立簡單Web Service演示Web Service基本發程:

1.系統條件:
Eclipse Java EE IDE for Web Developers
Java SE 6
Windows XP
2.基本環境搭建:
1)Java SE6 JDK安裝:載Java SE6 JDK雙擊安裝默認選項進行安裝即
2)Eclipse安裝與配置:
安裝直接解壓
配置處兩點Window>Preferences>Java>Installed JREs確保設置:

安裝路徑能略同
Window>Preferences>Java>Compiler 確保設置:

3.建立Server端工程相關包與類:
創建Java Project命名wsServerHelloWorld:

項目建立包:org.gnuhpc.wsServer

包邊建立類:SayHello

SayHello.java文件輸入代碼:
package org.gnuhpc.wsServer;
import javax.jws.WebService;
@WebService
public class SayHello {
private static final String SALUTATION = "Hello";
public String getGreeting(String name) {
return SALUTATION + " " + name;
}
}
其注意@WebService 稱作annotation或者metadataJava SE 5Web Services Metadata Specification引入Java SE 6於Web Services規范升級及JAX-WS(Java API for XML Web Services)2.0規范些升級使我Web Services創建調用變更加容易使用些新功能我僅僅使用簡單Annotations注釋Java類創建Web Services發者其類前用該annotations指定類告訴runtime engineWeb Service式操作使能該類annotations產布署Web ServiceWSDL映射annotationsJava源代碼與代表Web ServiceWSDL元素連接起

4.使用Ant產Server端代碼:
首先項目新建文件:build.xml使用OpenWith>AntEditor打輸入腳本代碼:

<arg line="-cp ./bin -keep -s ./src -d ./bin
org.gnuhpc.wsServer.SayHello"/>

default指定默認執行Targetwsgen,wsgen創建能夠使用WebService類所用於WebService發布源代碼文件經編譯二進制類文件WSDL符合規范該類WebService
Target名稱wsgen具體執行命令參數:
-cp 類路徑
-keep產java文件
-s 產源文件放哪
-d 產輸問價放哪

使用Ant Build選項運行:

功執行提示我刷新Project

我Project區域看結:

5.布Web Service
org.gnuhpc.wsServer建立類RunService:
package org.gnuhpc.wsServer;
import javax.xml.ws.Endpoint;
public class RunService {
/**
*@paramargs
*/
public static void main(String[] args) {
System.out.println("SayHello Web Service started.");
Endpoint.publish("" ,
new SayHello());
}
}
運行Run As>Java Application我結說明web serviceServer端已經啟

6.查看WSDL:
Window>Show View>Other>General>Internal Web Browser其輸入:?wsdl

看看底WSDL都記錄哪些信息看完停止該Server
7.監測Server
我創建完Server用Eclipse Web Services Explorer監測Server
Window>Open Perspective>Other >JavaEE

打Eclipse Web Services Explorer

點擊右角WSDL Page按鈕:

單擊WSDL MainURL輸入:?wsdl 按Go按鈕現視圖:

我觸發Web Service操作:點擊getGreetings添加參數比gnuhpc點擊Go按鈕:

8.創建Client端 工程相關包與類:
創建Java Project命名wsClientHelloWorld項目建立包:org.gnuhpc.wsClient

9.使用Ant產Client代碼框架:
編寫Web service使用工具利用WSDL進行調用客戶端樁;或者使用底層API手編寫Web service前者便者靈現我通前者做說明:
新建文件build.xml
New>File>build.xml

<arg line="-keep -s ./src -p org.gnuhpc.wsClient
-d ./bin ?wsdl"/>

注意:wsgen 支持 Java class 創建 Web serviceswsimport 支持 WSDL 創建 Web services別應於 JAX-RPC 式 Java2WSDL WSDL2Java要根據發布WSDL進行創建要先運行RunServer原
運行ServerRunService : Run As>Java Application>
運行該Ant腳本產Client代碼:Run As>Ant Build
運行功提示:

代碼:

步讀取WSDL並客戶端樁些樁我代碼所用Java類介面些樁給伺服器端功能提供客戶端介面例我伺服器提供Maths服務該服務帶叫做add我客戶端代碼調用樁樁實現該使用參數封裝Java調用變Webservice請求請求基於HTTP發送給伺服器且使用SOAP作RPC協議監聽伺服器接收該SOAP消息(十八九)其轉換伺服器處調用

⑼ 用C++寫伺服器怎麼

先學習socket通信程序的編寫,再學學多線程,還有就是資料庫,然後就差不多了

⑽ vc++6 怎麼編寫SOCKET的伺服器和客戶端 最好都具體步驟

1.簡單伺服器//#include//#pragmacomment(lib,"WS2_32.lib")WSADATAwsd;staticUINTport=%%1;UINTListen(LPVOIDpParam){SOCKETsServer,sClient;charbuf[1024];intretVal;if(WSAStartup(MAKEWORD(2,2),&wsd)!=0){return-1;//失敗}sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(INVALID_SOCKET==sServer){WSACleanup();return-1;//創建套接字失敗}SOCKADDR_INaddrServ;addrServ.sin_family=AF_INET;addrServ.sin_port=htons((short)pParam);addrServ.sin_addr.s_addr=INADDR_ANY;retVal=bind(sServer,(LPSOCKADDR)&addrServ,sizeof(SOCKADDR_IN));if(SOCKET_ERROR==retVal){closesocket(sServer);WSACleanup();return-1;//綁定套接字失敗}retVal=listen(sServer,1);if(SOCKET_ERROR==retVal){closesocket(sServer);WSACleanup();return-1;//開始監聽失敗}sockaddr_inaddrClient;intaddrClientlen=sizeof(addrClient);sClient=accept(sServer,(sockaddrFAR*)&addrClient,&addrClientlen);if(INVALID_SOCKET==sClient){closesocket(sServer);WSACleanup();return-1;//開始接受客戶端連接失敗}ZeroMemory(buf,sizeof(buf));retVal=recv(sClient,buf,sizeof(buf),0);if(SOCKET_ERROR==retVal){closesocket(sServer);closesocket(sClient);WSACleanup();return-1;//接收數據失敗}CString%%2(buf);closesocket(sServer);closesocket(sClient);WSACleanup();return0;}CWinThread*pThread=AfxBeginThread(Listen,&port);2.簡單客戶端//#include//#pragmacomment(lib,"WS2_32.lib")WSADATAwsd;SOCKETsHost;SOCKADDR_INservAddr;charbuf[1024];intretVal;if(WSAStartup(MAKEWORD(2,2),&wsd)!=0){return-1;//失敗}sHost=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(INVALID_SOCKET==sHost){WSACleanup();return-1;//創建套接字失敗}servAddr.sin_family=AF_INET;servAddr.sin_addr.s_addr=inet_addr(%%3);servAddr.sin_port=htons((short)%%2);intnServAddlen=sizeof(servAddr);retVal=connect(sHost,(LPSOCKADDR)&servAddr,sizeof(servAddr));if(SOCKET_ERROR==retVal){closesocket(sHost);WSACleanup();return-1;//連接伺服器失敗}ZeroMemory(buf,sizeof(buf));strcpy(buf,%%3);retVal=send(sHost,buf,sizeof(buf),0);if(SOCKET_ERROR==retVal){closesocket(sHost);WSACleanup();return-1;//向伺服器發送數據失敗}closesocket(sHost);WSACleanup();3.獲得本機IP//#include//#pragmacomment(lib,"WS2_32.lib")WSADATAwsd;if(WSAStartup(MAKEWORD(2,2),&wsd)!=0){return-1;//失敗}charszHostname[100],szHostaddress[200];if(gethostname(szHostname,sizeof(szHostname))!=SOCKET_ERROR){HOSTENT*pHostEnt=gethostbyname(szHostname);if(pHostEnt!=NULL){sprintf(szHostaddress,"%d.%d.%d.%d",(pHostEnt->h_addr_list[0][0]&0x00ff),(pHostEnt->h_addr_list[0][1]&0x00ff),(pHostEnt->h_addr_list[0][2]&0x00ff),(pHostEnt->h_addr_list[0][3]&0x00ff));}}elsereturn;CString%%1(szHostaddress);4.端對端通信//#include//#pragmacomment(lib,"WS2_32.lib")WSADATAwsd;SOCKETs;charbuf[1024];if(WSAStartup(MAKEWORD(2,2),&wsd)!=0){return-1;//失敗}s=socket(AF_INET,SOCK_DGRAM,0);if(s==INVALID_SOCKET){WSACleanup();return-1;//創建套接字失敗}SOCKADDR_INservAddr;servAddr.sin_family=AF_INET;servAddr.sin_addr.s_addr=inet_addr(%%1);servAddr.sin_port=htons(INADDR_ANY);if(bind(s,(SOCKADDR*)&servAddr,sizeof(SOCKADDR_IN))==SOCKET_ERROR){closesocket(s);WSACleanup();return-1;//綁定套接字失敗}intnServAddrlen=sizeof(servAddr);ZeroMemory(buf,sizeof(buf));if(recvfrom(s,buf,sizeof(buf),0,(SOCKADDR*)&servAddr,&nServAddrlen)==SOCKET_ERROR){closesocket(s);WSACleanup();return-1;//接收數據失敗}CString%%2(buf);ZeroMemory(buf,sizeof(buf));strcpy(buf,%%3);SOCKADDR_INclientAddr;clientAddr.sin_family=AF_INET;clientAddr.sin_addr.s_addr=inet_addr(%%4);clientAddr.sin_port=htons((short)%%5);intnClientlen=sizeof(clientAddr);if(sendto(s,buf,sizeof(buf),0,(SOCKADDR*)&clientAddr,nClientlen)==SOCKET_ERROR){closesocket(s);WSACleanup();return-1;//向伺服器發送數據失敗}closesocket(s);WSACleanup();5.點對點通信//#include//#pragmacomment(lib,"WS2_32.lib")WSADATAwsd;SOCKADDR_INaddrServ,addrServ2;SOCKETsServer,sClient,sHost;intretVal;sockaddr_inaddrClient;charbuf[1024];staticUINTport=%%2;BOOLlistenerRun=TRUE;UINTListen(LPVOIDpParam){addrServ.sin_family=AF_INET;addrServ.sin_port=htons((UINT)pParam);addrServ.sin_addr.s_addr=INADDR_ANY;retVal=bind(sServer,(LPSOCKADDR)&addrServ,sizeof(SOCKADDR_IN));if(SOCKET_ERROR==retVal){closesocket(sServer);WSACleanup();return-1;//綁定套接字失敗}retVal=listen(sServer,1);if(SOCKET_ERROR==retVal){closesocket(sServer);WSACleanup();return-1;//開始監聽失敗}intaddrClientlen=sizeof(addrClient);sClient=accept(sServer,(sockaddrFAR*)&addrClient,&addClientlen);if(INVALID_SOCKET==sClient){closesocket(sServer);WSACleanup();return-1;//接收客戶端請求失敗}while(listenerRun){ZeroMemory(buf,sizeof(buf));retVal=recv(sClient,buf,sizeof(buf));if(SOCKET_ERROR==retVal){closesocket(sServer);closesocket(sClient);WSACleanup();return-1;//接收客戶端數據失敗}CString%%4(buf);}}if(WSAStartup(MAKEWORD(2,2),&wsd)!=0){return-1;//失敗}sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(INVALID_SOCKET==sServer){WSACleanup();return-1;//創建套接字失敗}CWinThread*pThread=AfxBeginThread(Listen,&port);sHost=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(INVALID_SOCKET==sHost){WSACleanup();return-1;//創建套接字失敗}servAddr2.sin_family=AF_INET;servAddr2.sin_addr.s_addr=inet_addr(%%1);servAddr.sin_port=htons((short)%%3);intnServerAddrlen=sizeof(servAddr2);retVal=connect(sHost,(LPSOCKADDR)&servAddr2,sizeof(servAddr2));if(SOCKET_ERROR==retVal){closesocket(sHost);WSACleanup();return-1;//連接失敗}zeroMemory(buf,sizeof(buf));strcpy(buf,%%5);retVal=send(sHost,buf,sizeof(buf),0);if(SOCKET_ERROR==retVal){closesocket(sHost);WSACleanup();return-1;//向發送數據失敗}listenerRun=FALSE;DWORDdwExitCode;::GetExitCodeThread(pThread->m_hThread,&dwExitCode);pThread=null;closesocket(sServer);closesocket(sClient);closesocket(sHost);WSACleanup();

閱讀全文

與伺服器端如何編寫相關的資料

熱點內容
安卓怎麼換相機 瀏覽:931
華為相片文件夾怎麼刪除重復照片 瀏覽:312
plc編程視頻教程大全 瀏覽:938
直播用哪個app播放背景音樂 瀏覽:850
點歌機系統app在哪裡下載 瀏覽:609
javadate類型轉換string 瀏覽:694
RPG游戲解壓後亂碼 瀏覽:988
無線通信的幾個密鑰演算法 瀏覽:644
王者榮耀app數據修復在哪裡 瀏覽:429
基於單片機飲水機溫度控制系統的設計 瀏覽:455
c中委託被編譯後的結構 瀏覽:152
飛燕app怎麼注銷賬號 瀏覽:895
cad命令縮小 瀏覽:154
linux發展史 瀏覽:629
伺服器選用什麼CPU比較好 瀏覽:334
明星怎麼宣傳安卓 瀏覽:953
8255晶元編程 瀏覽:65
java文件bat運行 瀏覽:747
java常見筆試 瀏覽:529
360程序員模式 瀏覽:363