help with sockets

Joined
Sep 15, 2008
Messages
1
Reaction score
0
Points
1
i'm having problems with my simple server socket project (no, it's not a school project). when i build this and run it, i don't get any text in the textfields like i'm supposed to, the program just hangs. even with the debugging program it hangs without any errors as well. here's what i got so far:


SocketServer.h

#import <Cocoa/Cocoa.h>
#import <sys/socket.h>
#import <netinet/in.h>
#include <arpa/inet.h>



@interface SocketServer : NSObject {

int serverSocket, sSocket;
struct sockaddr_in socAddress;
int addressSize;
int intPortNumber;


IBOutlet NSTextField *txtReceive;
IBOutlet NSTextField *txtSend;
IBOutlet NSTextField *portNumber;


}

-(IBAction)openServerSocket:(id)sender;
-(IBAction)closeServerSocket:(id)sender;
-(IBAction)sendMessage:(id)sender;

@end



SocketServer.m


#import "SocketServer.h"
#import <sys/socket.h>
#import <netinet/in.h>
#include <arpa/inet.h>
#import <sys/types.h>

#define QUEUE 5

@implementation SocketServer


-(IBAction)openServerSocket:(id)sender
{
serverSocket = socket (AF_INET, SOCK_STREAM, 0);
addressSize = sizeof (struct sockaddr_in);

if(serverSocket < 0)
{
[txtReceive setStringValue:mad:"Error opening socket"];
}
else
{
[txtReceive setStringValue:mad:"Opening Socket..."];
}

socAddress.sin_addr.s_addr = INADDR_ANY;
socAddress.sin_port=htons(5838);
socAddress.sin_family = AF_INET;

if(bind(serverSocket, (struct sockaddr *)&socAddress, sizeof(socAddress)) <0)
{
[txtReceive setStringValue:mad:"Error binding to port"];
}

getsockname(serverSocket, (struct sockaddr *) &socAddress, (socklen_t *) &addressSize);
[txtReceive setStringValue:mad:"Opened socket"];

[txtReceive setStringValue:mad:"Creating listening queue"];

if(listen(serverSocket, QUEUE) <0)
{
[txtReceive setStringValue:mad:"Error creating listening queue"];
}

for (;;)
{
sSocket = accept(serverSocket, (struct sockaddr*)&socAddress, (socklen_t *)&addressSize);

}
}



yes, i read beej's guide to network programming and a few other socket explanations. i can't get why it won't open a socket. thanks
 

Del


Joined
Dec 24, 2006
Messages
901
Reaction score
15
Points
18
Location
N. Ireland
Your Mac's Specs
Mac Pro 2xQuad core 2.8GHZ
I have reposted this for the original poster this time using the code tags for clarity

Code:
SocketServer.h

#import <Cocoa/Cocoa.h>
#import <sys/socket.h>
#import <netinet/in.h>
#include <arpa/inet.h>



@interface SocketServer : NSObject {
	
	int serverSocket, sSocket;
	struct sockaddr_in socAddress;
	int addressSize;
	int intPortNumber;
	
	
	IBOutlet NSTextField *txtReceive;
	IBOutlet NSTextField *txtSend;
	IBOutlet NSTextField *portNumber;
	
	
}

-(IBAction)openServerSocket:(id)sender;
-(IBAction)closeServerSocket:(id)sender;
-(IBAction)sendMessage:(id)sender;

@end



SocketServer.m


#import "SocketServer.h"
#import <sys/socket.h>
#import <netinet/in.h>
#include <arpa/inet.h>
#import <sys/types.h>

#define QUEUE  5

@implementation SocketServer


-(IBAction)openServerSocket:(id)sender
{
	serverSocket = socket (AF_INET, SOCK_STREAM, 0);
	addressSize = sizeof (struct sockaddr_in);
	
	if(serverSocket < 0)
	{
		[txtReceive setStringValue:@"Error opening socket"];
	}
	else 
	{
		[txtReceive setStringValue:@"Opening Socket..."];
	}
	
	socAddress.sin_addr.s_addr = INADDR_ANY;
	socAddress.sin_port=htons(5838);
	socAddress.sin_family = AF_INET;
	
	if(bind(serverSocket, (struct sockaddr *)&socAddress, sizeof(socAddress)) <0)
	{
		[txtReceive setStringValue:@"Error binding to port"];
	}
	
	getsockname(serverSocket, (struct  sockaddr *) &socAddress, (socklen_t *) &addressSize);
	[txtReceive setStringValue:@"Opened socket"];
	
	[txtReceive setStringValue:@"Creating listening queue"];
	
	if(listen(serverSocket, QUEUE) <0)
	{
		[txtReceive setStringValue:@"Error creating listening queue"];
	}
	
	for (;;)
	{
		sSocket = accept(serverSocket, (struct sockaddr*)&socAddress, (socklen_t *)&addressSize);
		
	}
}
 

Shop Amazon


Shop for your Apple, Mac, iPhone and other computer products on Amazon.
We are a participant in the Amazon Services LLC Associates Program, an affiliate program designed to provide a means for us to earn fees by linking to Amazon and affiliated sites.
Top