• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: CFSocket Help
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CFSocket Help


  • Subject: Re: CFSocket Help
  • From: sunil prajapati <email@hidden>
  • Date: Mon, 19 Sep 2005 18:17:04 +0530

Hi
Here i am giving the source code sever and client using has been
created using CFSocket

====================== Server code ==========================
struct sockaddr_in a = {0, AF_INET, DataSet.TCPportNum, 0};

	CFDataRef d = CFDataCreate(NULL, (UInt8 *)&a, sizeof(struct sockaddr_in));
	CFSocketSignature signature = {AF_INET, SOCK_STREAM, 0, d};

	CFSocketRef socket = CFSocketCreateWithSocketSignature(NULL,
														   &signature,
														   kCFSocketAcceptCallBack,
														   acceptConnection,
														   NULL);
	char *c = CFDataGetBytePtr(d);
	//printf("\n\n******************* %s *********************\n\n",  c);

	CFRunLoopSourceRef source = CFSocketCreateRunLoopSource(NULL, socket, 0);
	CFRunLoopRef loop = CFRunLoopGetCurrent();
	CFRunLoopAddSource(loop, source, kCFRunLoopDefaultMode);
	CFRunLoopRun();
	CFRelease(source);

	printf("\nOUT OF ReceiveSendMessage_TCP()\n");

	return NULL;
}


// This function is called when any data is received from client side

void receiveData(CFSocketRef child, CFSocketCallBackType type,
CFDataRef address, const void *data, void *info)
{


	char buffer0[1024];
	//CFDataRef response;
	strcpy(buffer0,"Fortune Infotech");
	CFDataRef response = CFDataCreate(NULL,buffer0,sizeof(buffer0));
	CFDataRef       newData;

    newData = (CFDataRef *) data;


        if ( CFDataGetLength(newData) == 0 )
			{
				// A zero length data indicates the end of the data stream; the
client is dead
				fprintf(stderr, "ClientGotData: No Data from client side.\n" );
				// destroy this particular client
				// free up any resources available with this client
			}// end if datalength==0
		else
			{

				char * byteptr= CFDataGetBytePtr (newData);

		char buffer3[100];
		strcpy(buffer3, byteptr);
		strcat(DataSet.MESSAGE, buffer3);

		strcat(DataSet.MESSAGE, DataSet.ipstr);

		CFStringRef buff3 = CFStringCreateWithCStringNoCopy(NULL,
DataSet.MESSAGE, kCFStringEncodingMacRoman, NULL);
        const ControlID outputmsg		= {'SERV', 102};

		GetControlByID(DataSet.window, &outputmsg, &DataSet.outputTxtRef);
		SetControlData(DataSet.outputTxtRef, kControlEntireControl,
kControlEditTextCFStringTag, sizeof(CFStringRef), &buff3);
         printf("\nlength of newData =%d\n",CFDataGetLength(newData));
				printf("\nbyteptr=%s\n",byteptr);




			}// end else




CFSocketSendData(child, NULL, response, 0.0);
CFRelease(response);
//CFSocketInvalidate(child);
//CFRelease(child);

	printf("\nOUT OF receiveData()\n");
}

/*ClientInformationReceived(ClientInfo *pClientInfo)
{
printf("ClientName=%s",pClientInfo->MachineName);

}
*/

int sendMessageToClient(int clientNo,char * buffer,int buffsize)//int
clientNo,char * buffer,int buffsize)
{
//senddata(client[clientno].cfsocket
CFDataRef response = CFDataCreate(NULL,buffer,buffsize);

int ret_val=CFSocketSendData(CFChildSocket[clientNo], NULL, response, 0.0);
//int ret_val=CFSocketSendData(CFChildSocket, NULL, response, 0.0);

return ret_val;
}

int sendCommandToClient(int clientNo,char * buffer,int buffsize)
{
printf("\nEntered in sendCommandToClient");
CFDataRef response = CFDataCreate(NULL,buffer,buffsize);
int ret_val=CFSocketSendData(CFChildSocket[clientNo], NULL, response, 0.0);

return ret_val;
}

void acceptConnection(CFSocketRef socket, CFSocketCallBackType type,
CFDataRef address, const void *data, void *info)
{
	printf("\nENTERED IN acceptConnection()\n");

	CFSocketContext context;
	int *clientnum;
	clientnum=calloc(1,sizeof(int));

	*clientnum=gcount;

        memset(&context, 0, sizeof(context));
        context.info = clientnum;
	//client[gcount].child

	//CFSocketRef child
	CFChildSocket[gcount]= CFSocketCreateWithNative(NULL,
												*(CFSocketNativeHandle *)data,
												 kCFSocketDataCallBack ,
												receiveData,
												&context);
	CFRunLoopSourceRef childSource = CFSocketCreateRunLoopSource(NULL,
CFChildSocket[gcount], 0);
	//CFRunLoopSourceRef childSource = CFSocketCreateRunLoopSource(NULL,
CFChildSocket, 0);
	CFRunLoopRef loop = CFRunLoopGetCurrent();
	CFRunLoopAddSource(loop, childSource, kCFRunLoopDefaultMode);
	CFRelease(childSource);
	gcount++;// increament the child socket counter
 	printf("\nOUT OF acceptConnetcion()\n");
}



================== source code of client==========================
CFDataRef tcp_address;
CFSocketError socket_error;
CFRunLoopSourceRef socket_runloop;
//int length ,portnum;

struct sockaddr_in tcpip_sa;
//printf("enter the portnumber");
//scanf("%d",&portnum);
//portnum=9107;
//
/*tcpip_socket = CFSocketCreate(NULL, AF_INET, SOCK_STREAM, 0,
kCFSocketAcceptCallBack,&acceptconnection, NULL);*/
int tcpip_socket=socket(AF_INET,SOCK_STREAM,0);
if (tcpip_socket<0)
{
displayErr(CFSTR("Opening Socket"));
}
//struct hostent *serverTcp;
tcpip_sa.sin_family = AF_INET;
tcpip_sa.sin_addr.s_addr = INADDR_ANY;
tcpip_sa.sin_port =DataSetClient.TCPportNum;// htons(atoi(argv[1]));
serverTcp = gethostbyname(ipstr);
if (serverTcp == NULL)
	{
        displayErr(CFSTR("Error : No such
host."));//fprintf(stderr,"ERROR, no such host\n");
        exit(0);
	}

bcopy((char *)serverTcp->h_addr,
          (char *)&tcpip_sa.sin_addr.s_addr,
          serverTcp->h_length);

memset (&(tcpip_sa.sin_zero), '\0', 8);
//bzero(&tcpip_sa,sizeof(tcpip_sa));
tcpip_sa.sin_len = sizeof(struct sockaddr_in);
length = sizeof(struct sockaddr_in);
if (connect(tcpip_socket,(struct sockaddr *)&tcpip_sa,sizeof(tcpip_sa)) < 0)
        displayErr(CFSTR("Error Connecting"));//error("ERROR connecting");


CFSocketRef child = CFSocketCreateWithNative(NULL,
												(CFSocketNativeHandle )tcpip_socket,
												kCFSocketDataCallBack,
												receiveData,
												NULL);
int n5 = write(tcpip_socket,"hello from client",17);

 CFRunLoopSourceRef childSource = CFSocketCreateRunLoopSource(NULL, child, 0);
 CFRunLoopRef loop = CFRunLoopGetCurrent();
 printf("Accept Client request\n");
 CFRunLoopAddSource(loop, childSource, kCFRunLoopDefaultMode);
 CFRelease(childSource);

	return 0;
}


	//============================== CFSocket Creation
=========================================


CFDataRef tcp_address;
CFSocketError socket_error;
CFRunLoopSourceRef socket_runloop;
//int length ,portnum;

struct sockaddr_in tcpip_sa;
//printf("enter the portnumber");
//scanf("%d",&portnum);
//portnum=9107;
//
/*tcpip_socket = CFSocketCreate(NULL, AF_INET, SOCK_STREAM, 0,
kCFSocketAcceptCallBack,&acceptconnection, NULL);*/
int tcpip_socket=socket(AF_INET,SOCK_STREAM,0);
if (tcpip_socket<0)
{
displayErr(CFSTR("Opening Socket"));
}
//struct hostent *serverTcp;
tcpip_sa.sin_family = AF_INET;
tcpip_sa.sin_addr.s_addr = INADDR_ANY;
tcpip_sa.sin_port =DataSetClient.TCPportNum;// htons(atoi(argv[1]));
serverTcp = gethostbyname(ipstr);
if (serverTcp == NULL)
	{
        displayErr(CFSTR("Error : No such
host."));//fprintf(stderr,"ERROR, no such host\n");
        exit(0);
	}

bcopy((char *)serverTcp->h_addr,
          (char *)&tcpip_sa.sin_addr.s_addr,
          serverTcp->h_length);

memset (&(tcpip_sa.sin_zero), '\0', 8);
//bzero(&tcpip_sa,sizeof(tcpip_sa));
tcpip_sa.sin_len = sizeof(struct sockaddr_in);
length = sizeof(struct sockaddr_in);
if (connect(tcpip_socket,(struct sockaddr *)&tcpip_sa,sizeof(tcpip_sa)) < 0)
        displayErr(CFSTR("Error Connecting"));//error("ERROR connecting");


CFSocketRef child = CFSocketCreateWithNative(NULL,
												(CFSocketNativeHandle )tcpip_socket,
												kCFSocketDataCallBack,
												receiveData,
												NULL);
int n5 = write(tcpip_socket,"hello from client",17);

 CFRunLoopSourceRef childSource = CFSocketCreateRunLoopSource(NULL, child, 0);
 CFRunLoopRef loop = CFRunLoopGetCurrent();
 printf("Accept Client request\n");
 CFRunLoopAddSource(loop, childSource, kCFRunLoopDefaultMode);
 CFRelease(childSource);

	return 0;
}



	void receiveData(CFSocketRef child, CFSocketCallBackType type,
CFDataRef address, const void *data, void *info)
{
char* datarecv;
CFDataRef       newData;
newData = (CFDataRef) data;

		if ( CFDataGetLength(newData) == 0 )
			{
				// A zero length data indicates the end of the data stream; the
client is dead
				fprintf(stderr, "ClientGotData: No Data from client side.\n" );
				fprintf(stderr,"Connection broken\n");
				// destroy this particular client
				// free up any resources available with this client
			}// end if datalength==0
		else
			{
			datarecv=(char *)CFDataGetBytePtr(newData);
			printf("data received\n");
			printf("%s\n",(char *)datarecv);
			}// end else


//CFRelease(child);
}// end of function
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Macnetworkprog mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: CFSocket Help
      • From: Gerry Beggs <email@hidden>
References: 
 >CFSocket Help (From: Gerry Beggs <email@hidden>)

  • Prev by Date: Re: CFSocket Help
  • Next by Date: Re: DNS settings...
  • Previous by thread: Re: CFSocket Help
  • Next by thread: Re: CFSocket Help
  • Index(es):
    • Date
    • Thread