日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

Linux下飞鸽传书项目设计书,linux下基于ipmsg协议的飞鸽传书(一)

發(fā)布時(shí)間:2024/1/1 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux下飞鸽传书项目设计书,linux下基于ipmsg协议的飞鸽传书(一) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

//=============================================================

// 文件名稱:usrlist.c

// 功能描述:通用鏈表修改成的myUsrList鏈表, **注釋**部分為要注意修改的地方

//

//

//

//包含文件:usrlist.h lnklst.h

// 維護(hù)記錄:2009-05-08 V1.1 by lijian

//=============================================================

#include

#include

#include

#include

#include

#include

#include "lnklst.h"

#include "usrlist.h"

//===============================================================================

static PUSERINFO myUsrList = NULL;//鏈表頭在這里定義

static unsigned int count;

//========================================================================================

//函數(shù)名稱:delUsrEx(PUSERINFO usr)

//功能描述:釋放節(jié)點(diǎn)所占用的堆內(nèi)存空間

//函數(shù)參數(shù):usr要釋放的節(jié)點(diǎn)指針

//返 回 值:

//===========================================================================================

static void delUsrEx(PUSERINFO usr)

{

if(usr->usrname)

free(usr->usrname);

if(usr->hostname)

free(usr->hostname);

if(usr->ipaddr)

free(usr->ipaddr);

free(usr);

}

//==========================================================================================

//函數(shù)名稱:destroyUsrList(void)

//功能描述:鏈表初始化,所有內(nèi)存空間清0

//函數(shù)參數(shù):void

//返回值:

//=============================================================================================

static void destroyUsrList(void)

{

PUSERINFO tmpNod = myUsrList; //*****************這里要修改*********************

while(tmpNod)

{

PUSERINFO tmp = tmpNod->next;

delUsrEx(tmpNod); //清空節(jié)點(diǎn)所占的內(nèi)存

tmpNod = tmp;

}

}

/***********************************以下為用戶使用接口****************************************/

//=============================================================================================

//函數(shù)名稱:initUsrList(void)

//功能描述:調(diào)用destroyUsrList來(lái)清空鏈表,完成初始化

//函數(shù)參數(shù):

//返 回 值:

//============================================================================================

void initUsrList(void)

{

if(myUsrList) //*************這里要修改**********

{

destroyUsrList();

}

myUsrList = NULL;

}

//=============================================================================================

//函數(shù)名稱:addUsr(char *name, char *host,char *ip)

//功能描述:在鏈表中插入一個(gè)節(jié)點(diǎn)

//函數(shù)參數(shù):name、host、ip節(jié)點(diǎn)信息指針

//返回值:

//============================================================================================

int addUsr(char *name, char *host,char *ip) //使用通用鏈表時(shí)此函數(shù)必須修改

{

PUSERINFO newusr = (PUSERINFO)malloc(sizeof(USERINFO));

if(newusr == NULL)

return -ENOMEM;

newusr->usrname = (char *)malloc(strlen(name) + 1);

if(newusr->usrname == NULL)

{

free(newusr);

return -ENOMEM;

}

newusr->hostname = (char *)malloc(strlen(host) + 1);

if(newusr->hostname == NULL)

{

free(newusr->usrname);

free(newusr);

return -ENOMEM;

}

newusr->ipaddr = (char *)malloc(strlen(ip) + 1);

if(newusr->ipaddr == NULL)

{

free(newusr->ipaddr);

free(newusr);

return -ENOMEM;

}

newusr->num=count;

strcpy(newusr->usrname, name);

strcpy(newusr->hostname, host);

strcpy(newusr->ipaddr, ip);

count++;

//pthread_mutext_lock();

add_node((void**)&myUsrList, newusr); //*****************這里要修改*****************

//pthread_mutext_unlock();

return 0;

}

//=============================================================================================

//函數(shù)名稱:delUsr(PUSERINFO usr)

//功能描述:調(diào)用函數(shù)del_node從鏈表中刪除一個(gè)節(jié)點(diǎn)

//函數(shù)參數(shù):usr要從鏈表中刪除節(jié)點(diǎn)

//返回值: 成功返回0,失敗返回-1

//==============================================================================================

int delUsr(PUSERINFO usr)

{

if(usr==NULL)

{

printf("node is not found!\n");

return -1;

}

del_node((void**)&myUsrList, usr); //這里要注意修改

delUsrEx(usr);

count--;

return 0;

}

//===============================================================================================

//函數(shù)名稱:findUsrByName(char *name)

//功能描述:通過(guò)name查找節(jié)點(diǎn)

//函數(shù)參數(shù):name要查找的節(jié)點(diǎn)關(guān)鍵字

//返 回 值:找到的節(jié)點(diǎn)的結(jié)構(gòu)體指針,沒(méi)找到為null

//===============================================================================================

PUSERINFO findUsrByName(char *name)

{

PUSERINFO ret = NULL;

PUSERINFO tmpNod = myUsrList;

while(tmpNod)

{

if(strcmp(tmpNod->usrname, name) == 0)

{

ret = tmpNod;

break;

}

tmpNod = tmpNod->next;

}

return ret;

}

//=================================================================================================

//函數(shù)名稱:

//功能描述:通過(guò)num查找節(jié)點(diǎn)

//函數(shù)參數(shù):

//返回值:

//=================================================================================================

PUSERINFO findUsrByNum(unsigned int number)

{

//printf("find ok\n");

PUSERINFO ret = NULL;

PUSERINFO tmpNod = myUsrList;

while(tmpNod)

{

if(tmpNod->num == number)

{

ret = tmpNod;

break;

}

tmpNod = tmpNod->next;

}

return ret;

}

//=================================================================================================

//函數(shù)名稱:

//功能描述:打印輸出鏈表

//函數(shù)參數(shù):FIlE *file輸出終端,顯示器為,stdout

//返 回 值:輸出鏈表個(gè)數(shù)

//=================================================================================================

int listUsr(FILE *file)

{

int count = 1;

char temp[10];

PUSERINFO usr = myUsrList;

if(usr == NULL)

fprintf(file, "User List is empty!\n");

else

{

fprintf(file, "%6s %20s %20s %20s\n", "num", "Name", "hostname","ipaddr");

while(usr)

{

fprintf(file,"%6d %20s %20s %20s\n", usr->num, usr->usrname, usr->hostname,usr->ipaddr);

usr = usr->next;

}

//fprintf(file, "%d users found!\n", count);

}

return count;

}

/*

int main()

{

addUsr("usrname1", "host1","192.168.220.1");

listUsr(stdout);

addUsr("usrname2", "host2","192.168.220.2");

addUsr("usrname3", "host3","192.168.220.3");

addUsr("usrname4", "host4","192.168.220.4");

addUsr("usrname5", "host5","192.168.220.5");

listUsr(stdout);

//delUsr(findUsrByName("usrname3"));

delUsr(findUsrByNum(3));

//delUsr("usrname8");

listUsr(stdout);

printf("init list...\n");

initUsrList();

listUsr(stdout);

return 0;

}

*/

總結(jié)

以上是生活随笔為你收集整理的Linux下飞鸽传书项目设计书,linux下基于ipmsg协议的飞鸽传书(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。