?? main.cpp
字號:
#include <iostream.h> // 使用控制臺程序
#include "TelnetServer.h"
int main()
{
int nListen, // 監測服務器的監聽錯誤
nPort, // 服務器端口
nMaxConnects; // 最大連接數
MESSAGE mMsg; // 存儲客戶端發送的消息
USER uInfo;
TelnetServer tServ; // 主控制類
char cChat[9999]; // 存儲聊天內容
char *cText,*cText2,cInt[5];
cout<<"---- 服務器已啟動----"<<endl<<endl;
// 得到服務器的監聽端口
cout<<"請輸入監聽端口號(不能小于23): ";
cin>>nPort;
if (nPort < 23) { nPort = 23; }
// 得到最大允許的連接
cout<<"Max Clients (1-100): ";
cin>>nMaxConnects;
if (nMaxConnects < 1) { nMaxConnects = 1; }
if (nMaxConnects > 100) { nMaxConnects = 100; }
// 設置客戶連接消息
cChat[0] = 0;
cText = &cChat[0];
strcat(cText, "你已經成功連接到服務器端!");
cInt[0] = (char) 13;
cInt[1] = (char) 10;
cInt[2] = 0;
strcat(cText, &cInt[0]);
cText2 = "服務器已滿,請稍后再試!";
// 發送服務器信息到服務器類
tServ.setServer(nPort, nMaxConnects, cText, cText2);
// 開始監聽連接
nListen = tServ.startListen();
if (nListen == -1)
{
cout<<"服務器無法在指定的端口負責監聽! (PORT: "<<nPort<<")."<<endl;
return 0;
}
cout<<endl<<"--服務器已經開始運行--"<<endl<<endl;
while (1)
{
// 接受連接(如果有)
tServ.acceptConnects();
// 接受到來的消息(如果有)
tServ.acceptMessages();
// 得到第一個消息
mMsg = tServ.getMessage();
// 消息不為空
if (mMsg.cMsg[0] != 0)
{
// 得到客戶端反饋的消息
uInfo = tServ.getUserInfo(mMsg.nUser);
// 格式化該消息
cChat[0] = 0;
cText = &cChat[0];
strcat(cText, "From 客戶端 (編號: ");
cInt[0] = 0;
_itoa(mMsg.nUser, cInt, 10);
strcat(cText, &cInt[0]);
strcat(cText, ") (IP: ");
strcat(cText, inet_ntoa(uInfo.user_sin.sin_addr));
strcat(cText, ") (Port: ");
cInt[0] = 0;
_itoa((int) ntohs(uInfo.user_sin.sin_port), cInt, 10);
strcat(cText, &cInt[0]);
strcat(cText, "): ");
strcat(cText, &mMsg.cMsg[0]);
cout<<cText<<endl;
// 在消息的末尾添加換行和回車
cInt[0] = (char) 13;
cInt[1] = (char) 10;
cInt[2] = 0;
strcat(cText, &cInt[0]);
// 發送該消息到所有的連接用戶
tServ.sendAll(cText);
}
// 釋放和已經斷開的客戶端的連接的socket
tServ.closeEmptySockets();
}
// 關閉監聽端口
tServ.stopListen();
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -