C++和flex实现聊天室功能
公司安排开始做服务器,没有接触过这些东西。从零开始学习。
项目是做个聊天系统客户端用flex,服务器用C++,让我先出Demo。
服务器部分参照Windows网络编程一书中的select例子,基本一样,只是把例子中的的单个回应消息改成了群发消息。
虽然我对select模型还不熟悉,但是我知道如果要在一个套接字上发消息就必须设置FD_SET WriteSet,如果要在一个套接字上读消息就必须设置FD_SET ReadSet,设置就是调用函数FD_SET(SOCKET S, FD_SET* Set)。(就因为明白了这一点才改出了群发)
模型好多啊,慢慢学。
先贴代码
服务器 CSelectIO 类 就是改写了书上的例子
SelectIO.h:
class CSelectIO
{
public:
CSelectIO(void);
virtual ~CSelectIO(void);
public:
bool Init(int port);
private:
void Strat();
void Send();
bool CreateSocketInformation(SOCKET s);
void FreeSocketInformation(DWORD Index);
private:
int TotalSockets;
LPSOCKET_INFORMATION SocketArray[FD_SETSIZE];
SOCKET ListenSocket;
SOCKET AcceptSocket;
SOCKADDR_IN InternetAddr;
WSADATA wsaData;
FD_SET WriteSet;
FD_SET ReadSet;
DWORD Flags;
DWORD SendBytes;
DWORD RecvBytes;
DWORD Total;
WSABUF SendDataBuf;
};
SelectIO.cpp:
#include "StdAfx.h"
#include "SelectIO.h"
CSelectIO::CSelectIO(void)
:TotalSockets(0)
{
}
CSelectIO::~CSelectIO(void)
{
}
bool CSelectIO::Init(int port)
{
//初始化
int ret;
if ((ret = WSAStartup(0x0202,&wsaData)) != 0)
{
printf("WSAStartup() failed with error %d\n", ret);
WSACleanup();
return false;
}
//创建端口
if ((ListenSocket = WSASocket(AF_INET, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED)) == INVALID_SOCKET)
{
printf("WSASocket() failed with error %d\n", WSAGetLastError());
return false;
}
InternetAddr.sin_family = AF_INET;
InternetAddr.sin_addr.s_addr = htonl(INADDR_ANY);
InternetAddr.sin_port = htons(port);
//绑定
if (bind(ListenSocket, (PSOCKADDR) &InternetAddr, sizeof(InternetAddr))
== SOCKET_ERROR)
{
printf("bind() failed with error %d\n",
相关文档:
<img src="{{----}}13730" mce_src="{{----}}13730"/><span id="__caret">_</span><?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationCo ......
HScrollBar {
downArrowUpSkin:
Embed(source=”/assets/downArrow.png”);
downArrowOverSkin:
Embed(source=”/assets/downArrow.png”);
downArrowDownSkin:
Embed(source=”/assets/downArrow.png”);
upArrowUpSkin:
Embed(source=”/assets/upArrow.png”);
upArro ......
我计划的学习历程:
1. c和c++的基础知识,这个和操作系统无关,在windows上也可以学。c语言语法相对简单一点,c++不需要把所有的知识点都学会,要知道基本的封装,继承,多态之类的,还有STL。更深入的学习应该是在以后的工作中遇到问题了再去查资料。
2. 看书《APUE》,做书上的习题,掌握文件,系统调用,线程、进程、 ......
MyEclipse6.5与Flex Builder 3整合安装方法
最近想学习现在最热门的富客户端技术flex,于是下载了Flex Builder 3.0 For Eclipse plugin(FB3_WWEJ_Plugin.exe)准备安装.但是安装后启动Eclipse,找了半天也没找到Flex.而且Flex Builder会把JRE也安装.觉得这样很不舒服. 所以我自己想了一个办法,用MyEclispe6.5与Flex Builder ......
编译:C程序直接编译成标准的二进制可执行的代码,但C#的源程序并不是被编译成二进制可执行的形式,而是一种中间语言(MSIL),类似JAVA中的字节码
结构体:C#的结构体与C++的结构体相似。但是C#的结构体与类是不同的,而且不支持继承。
预编译:C#中存在预编译的指令支持条件编译,警告,错误报告和编译行控制。其指令 ......