我的聊天类小程序

前些天用mfc写了个聊天类小程序,本来不想贴出来的,看论坛里一个人分享的android SOCKET聊天类,便也有和大家分享的冲动,哈哈,不喜勿喷哦。

首先谈一下构想:

服务器(主机)挂起accept();使用TCP/IP协议

数据库在主机上,因为不懂客户机如何访问主机数据库。因此测试时在我的机子上用两个IP(127.0.0.1,无线连接192.168.1.xxx)实现。

服务器或客户机连接对方后便可对话,使用UDP协议。不说主机和客户机对数据库相关的查询了。

谈一谈现成的相关的吧:

由于现实在线好友列表的模块需要实时性,所以对在线好友的显示新建一个线程:

sockudp *addstring=new sockudp;
addstring->hwnd=m_hWnd;

HANDLE handle= CreateThread(NULL,0,add,LPVOID(addstring),0,NULL);
CloseHandle(handle);

add()便是不停对在线情况进行查询了(虽然效率不高,但也想不出别的办法了)



while(1)

{

.....

.....


if(LB_ERR ==m_listfriend.FindString(0,string)&&condition.m_online==1)
m_listfriend.AddString(string);
if((index=m_listfriend.FindString(0,string))!=LB_ERR&&condition.m_online==0)
m_listfriend.DeleteString(index);

}

另外接收信息时recv()会阻塞,好吧,再建一个线程。

sockudp *x=new sockudp;
x->hwnd=m_hWnd;
x->socket=sockSrv;
HANDLE handle=CreateThread(NULL,0,recvUDP,LPVOID(x),0,NULL);
CloseHandle(handle);


最后上图:

Server:

Client:



WINDOWS的UI要想做好的话可得花些心思,不像adroid那么容易copy过来。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值