📄 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 + -