• 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: Connecting a client to a tcp server?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Connecting a client to a tcp server?


  • Subject: Re: Connecting a client to a tcp server?
  • From: Suraj Rai <email@hidden>
  • Date: Tue, 9 Nov 2004 23:29:54 +0900

Hi Michael,

I am also a beginner with CF Networks and I recently wrote a small test program to do just this. Perhaps this will be of use to you:

#include <CoreFoundation/CoreFoundation.h>

void myCallBack (CFReadStreamRef stream, CFStreamEventType event, void *myPtr) {
switch(event) {
case kCFStreamEventHasBytesAvailable: {
UInt8 buf[1024];
CFIndex bytesRead = CFReadStreamRead(stream, buf, 1024);
if (bytesRead > 0) {
// write code here to deal with buf
}
break;
}
case kCFStreamEventErrorOccurred: {
CFStreamError error = CFReadStreamGetError(stream);
fprintf(stderr, "Error in callback\n");
CFReadStreamClose(stream);
CFRelease(stream);
break;
}
case kCFStreamEventEndEncountered: {
fprintf(stderr, "Error in callback\n");
CFReadStreamClose(stream);
CFRelease(stream);
stream = NULL;
break;
}
}
}

int main (int argc, const char * argv[]) {
CFStringRef host = CFSTR("localhost");
UInt32 port = 9999;
CFReadStreamRef myReadStream;


CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, host, port, &myReadStream, NULL);

CFStreamClientContext myContext = {0, NULL, NULL, NULL, NULL};


if (!CFReadStreamSetClient(myReadStream, kCFStreamEventHasBytesAvailable |
kCFStreamEventErrorOccurred | kCFStreamEventEndEncountered,
myCallBack, &myContext)) {
printf("This stream does not support stream-related events. Exiting ...");
return 1;
} else {
CFReadStreamScheduleWithRunLoop(myReadStream, CFRunLoopGetCurrent(), kCFRunLoopCommonModes);
}


if (!CFReadStreamOpen(myReadStream)) {
CFStreamError myErr = CFReadStreamGetError(myReadStream);
if (myErr.error != 0) {
if (myErr.domain == kCFStreamErrorDomainPOSIX) {
strerror(myErr.error);
} else if (myErr.domain == kCFStreamErrorDomainMacOSStatus) {
OSStatus macError = (OSStatus)myErr.error;
}
}
}


CFRunLoopRun();


return 0;
}


On Nov 9, 2004, at 11:16 PM, Michael Purdy wrote:

I have no experience with CF Network APIs. I'm hoping someone can help
or give a quick example of some code to connect a c++ client via tcp to
a server running on localhost port 8889.

The server is a java app which accepts java clients fine. I would like
to base the flow of the c++ app on the working java clients.

-connect
-send data
-wait for return data
-then (upon a return stream completing) continue to the next lines of
code.

The data being sent will be an array of floats. Any help or guidance
would be much appreciated.

Michael
_______________________________________________
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
 _______________________________________________
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: Connecting a client to a tcp server?
      • From: Jeremy Wyld <email@hidden>
References: 
 >Connecting a client to a tcp server? (From: "Michael Purdy" <email@hidden>)

  • Prev by Date: Connecting a client to a tcp server?
  • Next by Date: Re: Receive UDP broadcast packets with OTRcvUData
  • Previous by thread: Connecting a client to a tcp server?
  • Next by thread: Re: Connecting a client to a tcp server?
  • Index(es):
    • Date
    • Thread