• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: C/C++
  • 标签: c++  

资源简介

C++简单局域网聊天工具,

资源截图

代码片段和文件信息

#pragma comment(lib“ws2_32.lib“)
#include “afx.h“
#include 
#include “winsock2.h“
#include “Winnetwk.h“
#pragma comment( lib “mpr.dll“ )
using namespace std;

DWORD WINAPI threadproc(LPVOID IpParameter)
{
SOCKET sock=(SOCKET)IpParameter;
//接收数据
char recvbuf[1024];
memset(recvbuf‘\0‘1024);
sockaddr_in fro;
int frolen=sizeof(fro);
while(1)
{
int data = recvfrom(sockrecvbuf10240(sockaddr *)&fro&frolen);
if(data==SOCKET_ERROR )
{
cout<<“recvfrom failed“< cout< return -1;
}
cout< cout<<“客户端发来:“< Sleep(1000);
}
return 0;
}



void GetNameAndIp()
{

struct   hostent   *host;
struct   in_addr   *ptr;

DWORD   dwScope = RESOURCE_CONTEXT;
NETRESOURCE   *NetResource = NULL;
HANDLE   hEnum;
WNetOpenEnum(dwScope NULL NULL NULL &hEnum);

WSADATA   wsaData;
WSAStartup(MAKEWORD(1 1) &wsaData);

if (hEnum)
{
DWORD   Count = 0xFFFFFFFF;
DWORD   BufferSize = 10240;
LPVOID   Buffer = new char[10240];
WNetEnumResource(hEnum &Count Buffer &BufferSize);
NetResource = (NETRESOURCE*)Buffer;

char szHostName[200];

for (unsigned int i = 0; i < BufferSize / sizeof(NETRESOURCE); i++ NetResource++)
{
if (NetResource->dwUsage == RESOURCEUSAGE_CONTAINER && NetResource->dwType == RESOURCETYPE_ANY)
{
if (NetResource->lpRemoteName)
{
CString   strFullName = NetResource->lpRemoteName;
if (0 == strFullName.Left(2).Compare(_T(“\\\\“)))
strFullName = strFullName.Right(strFullName.GetLength() - 2);

gethostname(szHostName strlen(szHostName));
USES_CONVERSION;
char *pchar = T2A(strFullName);
host = gethostbyname(pchar);

if (host == NULL)   continue;
ptr = (struct in_addr *)   host->h_addr_list[0];

string str = ““;
for (int n = 0; n<4; n++)
{
CString addr;
if (n > 0)
{
str += “.“;
}
int value = (unsigned int)((unsigned char*)hos

评论

共有 条评论