• 大小: 47.19MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-06-22
  • 语言: 其他
  • 标签: c++  vs2017  多人聊天  

资源简介

包含客户端与服务端,实现了登录,注册,用户上线或离线提示,选择好友进行聊天等功能。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] = ‘\0‘;//加上字符串结束符。
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(“\n“);
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\n“ buff);
char *operation = substring(buff 0 find(buff ‘#‘ 1));
if (*operation == ‘4‘) {

int num = select(buff); 
printf(“当前在线用户为:\n“);
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\.vs\Server\v15\.suo

     文件   36974592  2018-11-01 23:28  Server\.vs\Server\v15\Browse.VC.db

     文件   69402624  2018-11-01 21:49  Server\.vs\Server\v15\ipch\AutoPCH\8b7f273086cef3b0\SERVER.ipch

     文件   69402624  2018-10-27 15:31  Server\.vs\Server\v15\ipch\AutoPCH\b70bc26525d36f90\SERVER.ipch

     文件     119296  2018-11-01 21:50  Server\Debug\Server.exe

     文件     693180  2018-11-01 21:50  Server\Debug\Server.ilk

     文件     667648  2018-11-01 21:50  Server\Debug\Server.pdb

     文件         76  2018-10-30 11:44  Server\Debug\username&pwd.txt

     文件         74  2018-11-01 23:28  Server\Server\Debug\Server.log

     文件     309827  2018-11-01 21:49  Server\Server\Debug\server.obj

     文件      77890  2018-10-22 18:41  Server\Server\Debug\server.obj.enc

     文件       1218  2018-11-01 21:49  Server\Server\Debug\Server.tlog\CL.command.1.tlog

     文件      41056  2018-11-01 23:28  Server\Server\Debug\Server.tlog\CL.read.1.tlog

     文件        420  2018-11-01 23:28  Server\Server\Debug\Server.tlog\CL.write.1.tlog

     文件       2106  2018-11-01 21:50  Server\Server\Debug\Server.tlog\link.command.1.tlog

     文件       5052  2018-11-01 23:28  Server\Server\Debug\Server.tlog\link.read.1.tlog

     文件        394  2018-11-01 23:28  Server\Server\Debug\Server.tlog\link.write.1.tlog

     文件        208  2018-11-01 23:28  Server\Server\Debug\Server.tlog\Server.lastbuildstate

     文件     617472  2018-11-01 21:49  Server\Server\Debug\vc141.idb

     文件     487424  2018-11-01 21:49  Server\Server\Debug\vc141.pdb

     文件      18846  2018-10-27 15:57  Server\Server\server.cpp

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

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

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

     文件        100  2018-11-01 22:03  Server\Server\username&pwd.txt

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

    ..A..H.     30208  2018-10-24 07:23  client\.vs\client\v15\.suo

     文件   36982784  2018-10-24 07:23  client\.vs\client\v15\Browse.VC.db

     文件   42598400  2018-10-23 19:27  client\.vs\client\v15\ipch\AutoPCH\892f6aae33837550\CLIENT.ipch

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

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

评论

共有 条评论