1. 怎麼寫一個QQ的伺服器端
怎麼能用MFC做伺服器呢!你要是想做一個簡單的即時通訊伺服器,我建議你在windows下用IOCP了,在linux下用epoll。這樣的話應該可以支持大幾百個人同時在線,最重要是業務邏輯不好寫,資料庫可以自己選一個,我們用的是oracle。qq現在的客戶端不是用的MFC,他們是調用自己寫的界面類庫,這么畫面更漂亮,不用太依賴微軟。
2. c#怎麼寫一個伺服器端的socket
namespace SocketTest{ class Program { public static void SendMessage() { Socket socket = serverSocket.Accept(); Console.WriteLine("Connected a client:{0}",socket.RemoteEndPoint); socket.Send(Encoding.ASCII.GetBytes("welcome to server")); //Thread thread = new Thread(ReceiveMessage); // thread.Start(); } public static void ReceiveMessage(object obj) { Socket socket = (Socket)obj; byte[] data = new byte[1024]; int len = socket.Receive(data); string dataString = Encoding.ASCII.GetString(data, 0, len); Console.WriteLine("Receive Data:{0} from {1}", dataString,socket.RemoteEndPoint); //Thread thread = new Thread(SendMessage); //thread.Start(socket); } static Socket serverSocket; static void Main(string[] args) { //定義接收數據長度變數 int recv; //定義接收數據的緩存 byte[] data = new byte[1024]; //定義偵聽埠 IPEndPoint ipEnd = new IPEndPoint(IPAddress.Any, 5566); //定義套接字類型 serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //連接 serverSocket.Bind(ipEnd); //開始偵聽 serverSocket.Listen(10); //控制台輸出偵聽狀態 Console.Write("Waiting for a client"); //Socket client; while (true) { //一旦接受連接,創建一個客戶端 Socket client = serverSocket.Accept(); //獲取客戶端的IP和埠 IPEndPoint ipEndClient = (IPEndPoint)client.RemoteEndPoint; //輸出客戶端的IP和埠 Console.WriteLine("Connect with {0} at port {1}", ipEndClient.Address, ipEndClient.Port); //定義待發送字元 string welcome = "Welcome to my server"; //數據類型轉換 data = Encoding.ASCII.GetBytes(welcome); while (true) { try { //發送 client.Send(data, data.Length, SocketFlags.None); //接收數據可以用線程也可以不用 //ReceiveMessage(client); Thread thread = new Thread(ReceiveMessage); thread.Start(client); ////對data清零 //data = new byte[1024]; ////獲取收到的數據的長度 //recv = client.Receive(data); ////如果收到的數據長度為0,則退出 //if (recv == 0) // break; ////輸出接收到的數據 //Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv)); //將接收到的數據再發送出去 // client.Send(data, recv, SocketFlags.None); } catch (Exception) { client.Close(); serverSocket.Close(); } } client.Close(); } //Console.WriteLine("Disconnect form{0}", ipEndClient.Address); serverSocket.Close(); } }}
3. 請問如何寫一個java 伺服器端的servlet,然後可以當客戶端發出http請求的時候,可以接受請求,讀取資料庫
在用printwriter.write(json) 返回給客戶端。
接受從客戶端傳來的param,如servlet.getParameter("name");
在定義一個String json = "";
json="這里要寫你客戶端json Store的格式"
printwriter.write(json);
4. JAVA問題:用socket編寫一個伺服器端程序
import java.net.*;
import java.io.*;
public class Server {
private ServerSocket ss;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public Server() {
try {
ss = new ServerSocket(8888);
while (true) {
socket = ss.accept();
in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
String line = in.readLine();
if("hello".equals(line)){
out.println("hello");
out.close();
}
in.close();
socket.close();
}
ss.close();
} catch (IOException e) {
}
}
public static void main(String[] args) {
new Server();
}
}
5. C++網路編程(socket)我要寫一個伺服器端程序和一個客戶端程序
可以啊,解決方案上右鍵,添加項目,不過沒這個必要啊,因為你又不能只開一個VS來同時調試兩個項目。
設成啟動項目後可以按F5進行調試運行,或者CTRL+F5進行不調試運行,不過最後還是只能調試一個項目
6. C#, WCF如何創建一個簡單的伺服器端和客戶端程序
首先VS中的模板WCF SERVICE APP 項目,是一個承載到IIS的服務,用過web service就清楚,部署都差不多。
客戶端引用wcf服務,知道url地址就行了,客戶端添加服務引用,和添加以前的web service差不多。
客戶端使用到服務端的數據模型,在服務端定義實體類時,添加 datacontract屬性和datamember屬性就ok.
推薦一些教程地址,可以選擇了看看,你提到的這些問題在教程中都有涉及到。
1,WCF系列學習5天速成 http://www.cnblogs.com/huangxincheng/category/340145.html
2,WCF入門學習【Sheldon_Lou】http://www.cnblogs.com/sheldon-lou/category/648478.html
3,無廢話WCF系列教程 http://www.cnblogs.com/iamlilinfeng/category/415833.html
4,WCF編程 http://www.cnblogs.com/zxj159/category/604460.html
5,WCF入門【停留的風】http://www.cnblogs.com/yank/category/568085.html
6,WCF初探【wangweimutou】http://www.cnblogs.com/wangweimutou/tag/WCF/
7,WCF【指尖流淌】http://www.cnblogs.com/jianliutang/category/277163.html
8,WCF【xfrog】---重點 http://www.cnblogs.com/xfrog/tag/WCF/
7. 求用java寫一個ftp伺服器客戶端程序。
import java.io.*;
import java.net.*;public class ftpServer extends Thread{ public static void main(String args[]){
String initDir;
initDir = "D:/Ftp";
ServerSocket server;
Socket socket;
String s;
String user;
String password;
user = "root";
password = "123456";
try{
System.out.println("MYFTP伺服器啟動....");
System.out.println("正在等待連接....");
//監聽21號埠
server = new ServerSocket(21);
socket = server.accept();
System.out.println("連接成功");
System.out.println("**********************************");
System.out.println("");
InputStream in =socket.getInputStream();
OutputStream out = socket.getOutputStream();
DataInputStream din = new DataInputStream(in);
DataOutputStream dout=new DataOutputStream(out);
System.out.println("請等待驗證客戶信息....");
while(true){
s = din.readUTF();
if(s.trim().equals("LOGIN "+user)){
s = "請輸入密碼:";
dout.writeUTF(s);
s = din.readUTF();
if(s.trim().equals(password)){
s = "連接成功。";
dout.writeUTF(s);
break;
}
else{s ="密碼錯誤,請重新輸入用戶名:";<br> dout.writeUTF(s);<br> <br> }
}
else{
s = "您輸入的命令不正確或此用戶不存在,請重新輸入:";
dout.writeUTF(s);
}
}
System.out.println("驗證客戶信息完畢...."); while(true){
System.out.println("");
System.out.println("");
s = din.readUTF();
if(s.trim().equals("DIR")){
String output = "";
File file = new File(initDir);
String[] dirStructure = new String[10];
dirStructure= file.list();
for(int i=0;i<dirStructure.length;i++){
output +=dirStructure[i]+"\n";
}
s=output;
dout.writeUTF(s);
}
else if(s.startsWith("GET")){
s = s.substring(3);
s = s.trim();
File file = new File(initDir);
String[] dirStructure = new String[10];
dirStructure= file.list();
String e= s;
int i=0;
s ="不存在";
while(true){
if(e.equals(dirStructure[i])){
s="存在";
dout.writeUTF(s);
RandomAccessFile outFile = new RandomAccessFile(initDir+"/"+e,"r");
byte byteBuffer[]= new byte[1024];
int amount;
while((amount = outFile.read(byteBuffer)) != -1){
dout.write(byteBuffer, 0, amount);break;
}break;
}
else if(i<dirStructure.length-1){
i++;
}
else{
dout.writeUTF(s);
break;
}
}
}
else if(s.startsWith("PUT")){
s = s.substring(3);
s = s.trim();
RandomAccessFile inFile = new RandomAccessFile(initDir+"/"+s,"rw");
byte byteBuffer[] = new byte[1024];
int amount;
while((amount =din.read(byteBuffer) )!= -1){
inFile.write(byteBuffer, 0, amount);break;
}
}
else if(s.trim().equals("BYE"))break;
else{
s = "您輸入的命令不正確或此用戶不存在,請重新輸入:";
dout.writeUTF(s);
}
}
din.close();
dout.close();
in.close();
out.close();
socket.close();
}
catch(Exception e){
System.out.println("MYFTP關閉!"+e);
}
}}
8. 如何寫一個Web伺服器
針對web伺服器:首先你要去了解HTTP協議,web server說到底就是一個遵循Http協議的應用程序。可以先寫一個簡單的,然後去關注一些high performance相關的, i/o 復用(epoll), event loop, non-blocking, C10k問題,tcp調優(tcp_cork, tcp_nodelay...),高級I/O function(e.g. sendfile, writev, readv, mmap, splice, tee...), 常用的服務端架構(推薦陳碩的Muo C++那本書,不是讓你看muo, 而是他講的一些思想、做法和框)
9. 如何在Unity中寫服務端
建議從底層開始寫,用socket+C#,新手寫伺服器比較困難,找找別人寫的成品框架比較好,最好別用引擎的unet,坑比較多
10. 如何寫一個簡單的HTTP伺服器
這是一個真實的HTTP請求的例子,其中每一行都以\r\n結尾。由於我們寫的是簡單的伺服器,所以我們只關心其中的幾行。
第一行稱為請求行,GET是請求方法,表示獲取資源,除此之外還有POST方法、PUT方法、HEAD方法、DELETE方法和OPTIONS方法等。由於我們寫一個簡單的伺服器,所以暫時僅支
持GET方法。/是URI,表示客戶希望訪問的資源的URI。HTTP/1.1是HTTP協議的版本,此例中表示1.1版本。我們需要解析請求行,需要解析出方法欄位、URI和HTTP協議版本。
第二行是Host欄位,表示所請求的資源所在的主機名和埠號。
第三行User-Agent是客戶的瀏覽器的類型,此例是運行在Ubuntu上的Firefox瀏覽器。
第四行Accept表示客戶接受的資源的類型。
第四行Accept-Language表示客戶接受的語言類型。
第五行Connection表示伺服器在發送完客戶請求的數據之後是否斷開TCP連接。keep-alive表示不斷開,close表示斷開。