• 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: How to stop listening on a port?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to stop listening on a port?


  • Subject: Re: How to stop listening on a port?
  • From: Malte Tancred <email@hidden>
  • Date: Mon, 11 Nov 2002 10:38:17 +0100

On sunday, nov 10, 2002, at 03:24 Europe/Stockholm, John Anderson wrote:
I'm using BSD sockets to listen on a TCP port... and all is working
fine, once. After the first connection, I'm having no luck. Since I'm
supporting connections over either serial or TCP, I need to instantiate
a new listening socket each time.

First of all, I'm not sure what you mean with "all is working". From what
I see the only thing that should work is the initial connection attempt.
I doubt the data exchange between your app and the client is working. Have
you really tested that part?

Second, why do you have to create a new listening socket every time? Do
you use different ports for every connection?

int newtonFileDescriptor;
NSFileHandle *socketHandle = nil;
...
if((newtonFileDescriptor = socket(AF_INET, SOCK_STREAM, 0)) > 0) {
...
if (bind(newtonFileDescriptor, (struct sockaddr *)&serverAddress,
sizeof(serverAddress)) >= 0) {
if (listen(newtonFileDescriptor, 0) == 0) {
...
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(gotConnection:)
name:NSFileHandleConnectionAcceptedNotification
object:myNewtonFileHandle];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(dataReceived:)
name:NSFileHandleReadCompletionNotification object:myNewtonFileHandle];

This doesn't make sense to me.

If I'm not mistaken you are trying to perform two different things
with the listening socket. The listening socket will do only one
thing, namely accept new connections. From the documentation of
NSFileHandle's acceptConnectionInBackgroundAndNotify:

"The notification includes as data a userInfo dictionary
containing the created NSFileHandle; access this object
using the NSFileHandleNotificationFileHandleItem key."

You should register for read completion notifications on this newly
created file handle, not the original listening socket. The listening
socket can only be used for accepting (ie creating) new sockets.

Sockets created when "accepting" on a listening socket represent the
actual connection between your application and the client application.

How do I stop the listen?

You close the listening socket.

Hope this helps,
Malte
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.

  • Follow-Ups:
    • Re: How to stop listening on a port?
      • From: John Anderson <email@hidden>
    • How to show wrapped text in table view
      • From: Rakesh Pandey <email@hidden>
References: 
 >How to stop listening on a port? (From: John Anderson <email@hidden>)

  • Prev by Date: NSScrollView
  • Next by Date: Re: TableColumn dataCell actions
  • Previous by thread: Re: How to stop listening on a port?
  • Next by thread: How to show wrapped text in table view
  • Index(es):
    • Date
    • Thread