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

📄 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 + -