Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Date: Thu, 6 Dec 2001 06:16:02 -0500 (EST) From: Haksun Li To: Subject: AF_INET connection refused help pls Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Dear all, This is my first time sending to the mailing list. I hope I am doing the right thing I am having problem writing a little program using cygwin. It is about a client sending message to a server. I run into the exact same problem described in: http://sources.redhat.com/ml/cygwin/2001-05/msg01085.html I read the follow up to this post but it doesnt seem to answer the question (if it does for others, there is something I dont understand. So please pardon me). My call to accept always fails, regardless of whether I use localhost or the actual IP address. I have also tried a few different ports to no avail. By the way, if both the client and server are on Solaris, then both work. If one of them is on Cygwin and the other is on Solaris, then the message sending doesnt work out. The Solaris client cannot send to the Cygwin server (connection refused). The Cygwin client cannot send to the Solaris sever (connection refused). I am working on the same machine which runs Win2K server. My version of Cygwin is pretty new (havent figured out how to check the version yet) coz I just d/l it 2 weeks ago. Can anyone please shed some light on what goes wrong here. My codes are the below, followed by the output. Thanks very much in advance!!! Administrator AT MOBILEHERO ~/Circa/Utils $ ./clientMessage.exe Sending message to server with ip mobilehero, port 4000 Error: cannot connect! errno = 111 This means Connection refused Administrator AT MOBILEHERO ~/Circa/Utils Server: #include #include #include #include #include #include #include #include #include // fake server int main () { struct sockaddr_in server_addr, *client_addr; struct hostent *hp; int listenfd, client_len; int *iptr; char ip_address[] = "localhost"; int port = 9998; if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("Error: server cannot create socket\n"); exit(1); } printf("server socket at %d\n", listenfd); if ((hp = gethostbyname(ip_address)) == NULL) { printf("Error: server cannot get the host information\n"); exit(1); } server_addr.sin_family = hp->h_addrtype; bcopy((char*)hp->h_addr, (char*)&server_addr.sin_addr, hp->h_length); server_addr.sin_port = port; if (bind(listenfd, (sockaddr*)&server_addr, sizeof(server_addr)) < 0) { printf("Error: server binding error\n"); exit(1); } listen(listenfd, 5); client_len = sizeof(sockaddr_in); client_addr = (sockaddr_in*)malloc(client_len); printf("Listening at host %s, port %d\n", hp->h_name, port); while (1) { printf("waiting for the messages\n"); iptr = (int*)malloc(sizeof(int)); if ((*iptr = accept(listenfd, (sockaddr*)&client_addr, &client_len)) == -1) { printf("Error: server cannot accept!\n"); //exit(1); } printf("server connection establised at %d\n", *iptr); } return 1; } client: #include #include #include #include #include #include #include #include #include #include #include const int MAX_NUMBER_OF_BODIES = 10; const int FIELD_LENGTH = 50; struct AgentMessage { char sender[FIELD_LENGTH]; char receiver[FIELD_LENGTH]; char subject[FIELD_LENGTH * 2]; int nBody; char body[MAX_NUMBER_OF_BODIES][FIELD_LENGTH]; }; void main () { struct sockaddr_in agent_addr; struct hostent *hp; int agent_id; struct AgentMessage msg; int i; char sender_ip[] = "localhost"; char dest_ip[] = "localhost"; int port = 9998; // make message bzero((char*)(&msg), sizeof(AgentMessage)); strcpy(msg.sender, sender_ip); strcpy(msg.receiver, dest_ip); strcpy(msg.subject, "READY"); if ((agent_id = socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("Error: cannot create socket!\n"); exit(1); } if ((hp = gethostbyname(dest_ip)) == NULL) { printf("Error: cannot get the host information about ip %s!\n",dest_ip); exit(1); } printf("Sending message to server with ip %s, port %d\n", hp->h_name, port); memset(&agent_addr, 0, sizeof(agent_addr)); agent_addr.sin_family = hp->h_addrtype; bcopy((char*)hp->h_addr, (char*)&agent_addr.sin_addr, hp->h_length); agent_addr.sin_port = htons(port); if (connect(agent_id, (sockaddr*)&agent_addr, sizeof(agent_addr)) != 0) { printf("Error: cannot connect!\n"); printf("errno = %d\n", errno); printf("This means %s\n", strerror(errno)); exit(1); } if (write(agent_id, (void*)&msg, sizeof(AgentMessage)) <= 0) { printf("Error: cannot send message to server\n"); exit(1); } close(agent_id); printf("message sent\n"); } Haksun Li Advanced Technology Laboratory 133 Electrical Engineering and Computer Science Dept. University of Michigan Ann Arbor MI 48109 U.S.A. haksunli AT engin DOT umich DOT edu Quote: -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/