⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example.c

📁 unix下多进程编程实例
💻 C
字号:
/********************************************************************

 * NAME 		: example.c

 * FUNCTION		: 

 * AUTHOR		: ZZ-NODE/2000.12.21/songqufei

 * OS           : solaris

 ********************************************************************/



/********************************************************************

 *	INCLUDE FILES

 ********************************************************************/

#include "song1.h"











/********************************************************************

 * NAME 		: CLIENT_S1_send_a_greeding

 * FUNCTION		: read message send from other process and deal it

 * PROCESS		: 1. set operated socket set

 * 				: 2. select these sockets

 *				: 3. read socket and call related functions

 *				: 4. accept connect to it when needed

 * INPUT		: sd : socket ID related to process

 * OUTPUT		: 

 * UPDATE		:

 * RETURN		: NONE :

 *				: OTHER:

 * AUTHOR		: ZZ-NODE/2000.12.21/songqufei

 * CALL			: FD_SET()

 *				: FD_ZERO()

 ********************************************************************/

int CLIENT_S1_send_a_greeding(int iSocketID)

{

	int i=0,j;

	int errflag;

	int iRecordNum;		/* 包体纪录个数 */

	long lPacketSize;	/* 发送包长度 */

	char *pPacket=NULL;

	PacketHead *pPacketHead;

	char *pPacketToSend=NULL; 		/* 发送包指针 */

	typedef struct _GREEDING{

		int greedingID;

		char a_greeding[255];

	} GREEDING;

	GREEDING *The_greeding;



	while(1){

		iRecordNum = 1 ;

		lPacketSize=sizeof(PacketHead)+iRecordNum*sizeof(GREEDING);

		pPacketToSend=(char *)malloc(lPacketSize);

		if(pPacketToSend==NULL){       /*  分配内存失败 */

			DebugLog(" no enough memory ");

			return IS_NG;

		}

		memset(pPacketToSend,0,lPacketSize);

    

		/*   填充包头  */

		pPacketHead=(PacketHead *)pPacketToSend;

		pPacketHead->iPacketID		= P_SONG1_SEND_GREEDING;

		pPacketHead->iRetPktID		= IS_OK;

		pPacketHead->cRetCode		= IS_OK;

		pPacketHead->lPacketSize	= lPacketSize;

		pPacketHead->iRecordNum		= iRecordNum;

		pPacketHead->iRecordSize	= sizeof(GREEDING);



		/*填充包体*/

		The_greeding=(GREEDING *)(pPacketToSend+sizeof(PacketHead));

		for(j=0;j<iRecordNum;j++){

			The_greeding->greedingID=i;

			strcpy(The_greeding->a_greeding,"Hello!I'm song1.");

		}



		if (TCP_SendPacket(iSocketID,pPacketToSend)<0){

			DebugLog("发WorkSheetResult包失败");

			return IS_NG;

		}

		/*等待应答包*/

		if(CLIENT_S1_CheckSocket(iSocketID)==IS_NG){

			DebugLog("recv packet error");

			return IS_NG;

		}

		/*收应答包*/

		pPacket = TCP_RecvPacket(iSocketID,60,&errflag);

		if(errflag || pPacket==NULL){

			DebugLog("receive packet error errflag=%d",errflag);

			return IS_NG;

		}



		if(pPacketToSend){

			free(pPacketToSend);

			pPacketToSend=NULL;

		}

		if(pPacket){

			free(pPacket);

			pPacket=NULL;

		}

		DebugLog("send NO.%d greeding success.",i);

		i++;

		sleep(10);

	}



	return IS_OK;	

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -