局域网通信c语言,C语言编写的仿QQ局域网通讯程序.pdf

// 系统添加网络连接的头文件引用及一些消息类型的宏定义:

#include

#include

#pragma comment(lib,"ws2_32.lib")

#define CLIENTSEND_EXIT 1

#define CLIENTSEND_TRAN 2

#define CLIENTSEND_LIST 3

#define SERVERSEND_SELFID 1

#define SERVERSEND_NEWUSR 2

#define SERVERSEND_SHOWMSG 3

#define SERVERSEND_ONLINE 4

FILE *ioutfileServer;

FILE *ioutfileClient;

struct CReceivePackage

{

int iType;

int iToID;

int IFromID;

char cBuffer[1024];

};

struct CSendPackage

{

int iType;

int iCurConn;

char cBuffer[1024];

};

struct CUserSocketInfo

{

int ID;

char cDstIP[64];

int iPort;

SOCKET sUserSocket;

};

struct CUser

{

int ID;

char cDstIP[64];

};

struct CUser usr[20];

int bSend 0;

int iMyself;

int iNew 0;

struct CUserSocketInfo usrinfo[20];

//退出函数

void ExitSystem()

{

if(ioutfileServer!NULL)

fclose(ioutfileServer);

if(ioutfileClient!NULL)

fclose(ioutfileClient);

WSACleanup();

exit(0);

}

//服务器端接收消息的线程

DWORD WINAPI threadproServer(LPVOID pParam)

{

SOCKET hsock (SOCKET)pParam;

char cRecvBuffer[1024];

char cShowBuffer[1024];

int num 0;

if(hsock! INVALID_SOCKET)

printf("start:\n");

while(1)

{

num recv(hsock,cRecvBuffer,1024,0);

if(num> 0)

{

cRecvBuffer[num] '\0';

sprintf(cShowBuffer,"to me:%s\n",cRecvBuffer);

printf("%s",cShowBuffer);

fwrite(cShowBuffer,sizeof(char),strlen(cShowBuffer),ioutfileServer);

fflush(ioutfileServer);

if(strcmp("exit",cRecvBuffer) 0)

{

ExitSystem();

}

}

}

return 0;

}

//检查IP

int CheckIP(char *cIP)

{

char IPAddress[128];

char IPNumber[4];

int iSubIP 0;

int iDot 0;

int iResult 0;

int iIPResult 1;

int i;

memset(IPNumber,0,4);

strncpy(IPAddress,cIP,128);

for(i 0;i<128;i++)

{

if(IPAddress[i] '.')

{

iDot++;

iSubIP 0;

if(atoi(IPNumber)>255)

iIPResult 0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值