多人聊天小程序


包含客户端与服务端,实现了登录,注册,用户上线或离线提示,选择好友进行聊天等功能。VS2017下开发。
资源截图
代码片段和文件信息
#include 
#include  
#include 
#pragma comment(lib “ws2_32.lib“)
#include
#define namesize 16
#define passwordsize 10
#pragma warning(disable:4996)
using namespace std;
char name[namesize];
char password[passwordsize];
char selectflag[10][2];
char selectname[10][16];
char selectdialog[10][16];
int sel;
//*************************************************************************************
//截取字符串ch从pos位置开始的length长度的字符串并返回新字符串的地址 
char* substring(char* ch int pos int length)
{
char* pch = ch;
//定义一个字符指针,指向传递进来的ch地址。
char* subch = (char*)calloc(sizeof(char) length + 1);
//通过calloc来分配一个length长度的字符数组,返回的是字符指针。
int i;
//只有在C99下for循环中才可以声明变量,这里写在外面,提高兼容性。
pch = pch + pos;
//是pch指针指向pos位置。
for (i = 0; i {
subch[i] = *(pch++);
//循环遍历赋值数组。
}
subch[length] = ‘‘;//加上字符串结束符。
return subch; //返回分配的字符数组地址。
}
//*************************************************************************************
//从字符串buf中寻找第n次出现字符c的位置并返回,没有则返回-1 
int find(char *buf char c int n)
{
if (n<0)
return -1;
int poisition = -1 tempn = 1;
int len = strlen(buf);
for (int i = 0; i if (buf[i] == c) {
if (tempn == n) {
poisition = i;
break;
}
tempn++;
}
}
return poisition;

}
int select(char *buff)
{
//4#0.black#1.tony#
printf(buff);
printf(“
“);
int num = 0;//在线用户人数
int numberofdian = 1;
int numberofjing = 1;
int m = find(buff ‘#‘ 1) n = find(buff ‘#‘ 2);
for (int i = 0; m != -1 && n != -1 && i < 10; i++)
{//
char *sub1 = substring(buff m + 1 find(buff ‘.‘ numberofdian) - m - 1);//
char *sub2 = substring(buff find(buff ‘.‘ numberofdian) + 1 find(buff ‘.‘ numberofdian + 1) - find(buff ‘.‘ numberofdian) - 1);
char *sub3 = substring(buff find(buff ‘.‘ numberofdian + 1) + 1 n - find(buff ‘.‘ numberofdian + 1) - 1);
numberofdian += 2;
numberofjing += 1;

strcpy_s(selectflag[num] 5 sub1);
strcpy_s(selectname[num] 20 sub2);
strcpy_s(selectdialog[num] 20 sub3);


num++;
m = n;
n = find(buff ‘#‘ numberofjing + 1);
}

return num;
}
void refresh()
{
printf(““);
}

DWORD WINAPI  recv(PVOID p)
{
SOCKET sockConing = *((SOCKET*)p);
char buff[1024];
memset(buff 0 sizeof(buff));

while (1)//3#0.tony#hello
{

memset(buff 0 sizeof(buff));
recv(sockConing buff sizeof(buff) 0);
//printf(“收到buff=%s
“ buff);
char *operation = substring(buff 0 find(buff ‘#‘ 1));
if (*operation == ‘4‘) {

int num = select(buff); 
printf(“当前在线用户为:
“);
for (int i = 0; i < num; i++)
{
//printf(selectid[i]);
printf(“%d“ i);
printf(“.“);
printf(selectname[i]);
if (strcmp(selectflag[i] “2“)==0) {
printf(“  状态:在线“);
}
else if (strcmp(selectflag[i] “3“)==0) {
printf(“  状态:通话中(与%s)“selectdialog[i]);
}
printf(“        “);


}
printf(

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     38400  2018-11-01 23:28  Server.vsServerv15.suo

     文件   36974592  2018-11-01 23:28  Server.vsServerv15Browse.VC.db

     文件   69402624  2018-11-01 21:49  Server.vsServerv15ipchAutoPCH8b7f273086cef3b0SERVER.ipch

     文件   69402624  2018-10-27 15:31  Server.vsServerv15ipchAutoPCH70bc26525d36f90SERVER.ipch

     文件     119296  2018-11-01 21:50  ServerDebugServer.exe

     文件     693180  2018-11-01 21:50  ServerDebugServer.ilk

     文件     667648  2018-11-01 21:50  ServerDebugServer.pdb

     文件         76  2018-10-30 11:44  ServerDebugusername&pwd.txt

     文件         74  2018-11-01 23:28  ServerServerDebugServer.log

     文件     309827  2018-11-01 21:49  ServerServerDebugserver.obj

     文件      77890  2018-10-22 18:41  ServerServerDebugserver.obj.enc

     文件       1218  2018-11-01 21:49  ServerServerDebugServer.tlogCL.command.1.tlog

     文件      41056  2018-11-01 23:28  ServerServerDebugServer.tlogCL.read.1.tlog

     文件        420  2018-11-01 23:28  ServerServerDebugServer.tlogCL.write.1.tlog

     文件       2106  2018-11-01 21:50  ServerServerDebugServer.tloglink.command.1.tlog

     文件       5052  2018-11-01 23:28  ServerServerDebugServer.tloglink.read.1.tlog

     文件        394  2018-11-01 23:28  ServerServerDebugServer.tloglink.write.1.tlog

     文件        208  2018-11-01 23:28  ServerServerDebugServer.tlogServer.lastbuildstate

     文件     617472  2018-11-01 21:49  ServerServerDebugvc141.idb

     文件     487424  2018-11-01 21:49  ServerServerDebugvc141.pdb

     文件      18846  2018-10-27 15:57  ServerServerserver.cpp

     文件       5946  2018-10-14 09:26  ServerServerServer.vcxproj

     文件        951  2018-10-14 09:26  ServerServerServer.vcxproj.filters

     文件        165  2018-10-14 09:25  ServerServerServer.vcxproj.user

     文件        100  2018-11-01 22:03  ServerServerusername&pwd.txt

     文件       1432  2018-10-14 09:25  ServerServer.sln

    ..A..H.     30208  2018-10-24 07:23  client.vsclientv15.suo

     文件   36982784  2018-10-24 07:23  client.vsclientv15Browse.VC.db

     文件   42598400  2018-10-23 19:27  client.vsclientv15ipchAutoPCH892f6aae33837550CLIENT.ipch

     文件       7813  2018-10-24 07:23  clientclientclient.cpp

............此处省略44个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)