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

📄 chatserveru.h

📁 关于书籍《Borland c++Builder工程实践》的源代码
💻 H
字号:
//---------------------------------------------------------------------------
#ifndef charsvrH
#define charsvrH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <Menus.hpp>
#include <ScktComp.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
enum ServerStatus {SS_NOT_RUNNING, SS_RUNNING};
enum LogEntryType {LET_WARNING, LET_ERROR, LET_SIGNON, LET_SIGNOFF};
enum ServerNotification {SN_LOGON, SN_LOGOFF, SN_PUBLIC_MSG,SN_PRIVATE_MSG};
#define CHAT_SERVER_PORT 5790
//---------------------------------------------------------------------------
class TChatServerForm : public TForm
{
__published:	// IDE-managed Components
	TServerSocket *MainServerSocket;
    TStatusBar *ChatServerStatusBar;
	TMainMenu *MainMenu1;
        TMenuItem *File;
        TMenuItem *Exit;
    TMenuItem *StartStopServer;
	TListView *ConnectionsListView;
	TSplitter *Splitter1;
	TListView *LogEntryListView;
  TMenuItem *ClearLog;
	void __fastcall StartStopServerClick(TObject *Sender);
	void __fastcall MainServerSocketClientConnect(TObject *Sender,
		  TCustomWinSocket *Socket);
	void __fastcall MainServerSocketClientDisconnect(TObject *Sender,
		  TCustomWinSocket *Socket);
	void __fastcall MainServerSocketClientError(TObject *Sender,
		  TCustomWinSocket *Socket, TErrorEvent ErrorEvent,
		  int &ErrorCode);
	void __fastcall MainServerSocketClientRead(TObject *Sender,
		  TCustomWinSocket *Socket);

	void __fastcall ExitClick(TObject *Sender);
  void __fastcall ClearLogClick(TObject *Sender);
private:	// User declarations
	ServerStatus CurrentServerStatus;

	void SetServerStatus(ServerStatus _serverstatus);
	void AddConnectionToListView(TCustomWinSocket *ClientSocket);
	void RemoveConnectionFromListView(TCustomWinSocket *Socket);
	void UpdateStatusBar(bool DecUse = false);
	void AddLogEntry(LogEntryType let, AnsiString EntryText);
	void SetUserBySocket(TCustomWinSocket *Socket, const AnsiString &UserNickName);
	void GetUserBySocket(TCustomWinSocket *Socket, AnsiString &UserNickName);
  int GetSocketNoByUser(AnsiString User);
	TListItem * ListItemBySocket(TCustomWinSocket *Socket);
	void BroadcastMessage(AnsiString Message, TCustomWinSocket *ExcludeSocket);
  void MulticastMessage(AnsiString Message, AnsiString UserList); //*!
	void SendNotification(ServerNotification sn, AnsiString additional, TCustomWinSocket *ExcludeSocket);

public:		// User declarations
	__fastcall TChatServerForm(TComponent* Owner);
    //save the sockets to send private msg
    AnsiString MuticastUserList;

};
//---------------------------------------------------------------------------
extern PACKAGE TChatServerForm *ChatServerForm;
//---------------------------------------------------------------------------
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -