⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 Visual C++网络通信编程实用案例精选光盘内容6-9章
💻 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 + -