example.c

来自「unix下多进程编程实例」· C语言 代码 · 共 104 行

C
104
字号
/********************************************************************

 * 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 + =
减小字号Ctrl + -
显示快捷键?