Sponsored Content
Top Forums UNIX for Dummies Questions & Answers Socket programming : Accept return 0. Post 302140811 by abc.working on Tuesday 16th of October 2007 06:49:01 AM
Old 10-16-2007
Server code:
Code:
#define MYPORT 1034
int main()
{
 struct sockaddr_in sin;
 struct sockaddr_in cin;
 int s = socket(PF_INET,SOCK_STREAM,0);
 sin.sin_family = AF_INET;
 sin.sin_port = htons(MYPORT);
 sin.sin_addr.s_addr = INADDR_ANY;
 memset(sin.sin_zero,'\0',sizeof(sin.sin_zero));
 int check=bind(s,(struct sockaddr *)&sin,sizeof(sin));
 check=listen(s,5);
 addrlen=sizeof(cin);
//My server waits when below line is encountered
 s_client = accept(s,(struct sockaddr *)&cin,&addrlen);
//once client runs and connect is executed accept returns 0
 printf("hi %s\n",inet_ntoa(cin.sin_addr));
 char *buf;
 //the below recv is non blocking, it doesn't wait for client to send.
 recv(s_client,buf,100,0);
}

Client code:
Code:
int main(int argc,char *argv[])
{
 struct sockaddr_in sin;
 struct sockaddr_in cin;
 struct hostent *hp;
 hp=gethostbyname(argv[1]);
 cin.sin_family = AF_INET;
 cin.sin_addr = *((struct in_addr *)hp->h_addr);
 cin.sin_port = htons(MYPORT);
 memset(cin1.sin_zero,'\0',sizeof(cin.sin_zero));
 int s = socket(PF_INET,SOCK_STREAM,0);
 int check = connect(s,(struct sockaddr *)&cin,sizeof(cin));
 char buf[100] = "from client";
 int len = strlen(buf);
 int bytes_sent = send(s,buf,len,0);
 printf("%d",bytes_sent); // output is 11
}


Last edited by vino; 10-16-2007 at 07:58 AM.. Reason: Added code tags
 

10 More Discussions You Might Find Interesting

1. Programming

Socket Programming

Dear Reader, Is there any way to check up socket status other than 'netstatus ' Thanks in advance, (1 Reply)
Discussion started by: joseph_shibu
1 Replies

2. Programming

Socket Programming socket

Hello, I actually try to make client-server program. I'm using SCO OpenServer Release 5.0.0 and when I try to compile my code (by TELNET) I've got this error : I'm just using this simple code : and I get the same error if I use : If someone can help me, Thanks (2 Replies)
Discussion started by: soshell
2 Replies

3. IP Networking

socket programming

my system is a stand alone system... i want to try doing socket porgramming..ihave heard that this is usually done during testing... how can i do that....? (6 Replies)
Discussion started by: damn_bkb
6 Replies

4. Programming

Please help! accept function problems in Socket programming

Hi, I have a client-server socket program. It has been working fine for over a year, but recently it started to show strange behavior.:confused: After the server program runs for a while, it will show in the top command saying it is using lots of CPU, MEM. I assume it means the server code is... (1 Reply)
Discussion started by: natxie
1 Replies

5. IP Networking

Port number of socket returned by accept()

Hi, I typed a few tcp/ip client/server examples from a book and it works - sort of - but I noticed something strange. When I run my server I set it to use port 3001 and the client uses the same port to connect to server. They succeed, but the server prints something that doesn't really make much... (0 Replies)
Discussion started by: idelovski
0 Replies

6. UNIX for Advanced & Expert Users

socket programming

can we send udp message to a destination ip address .. without having an ip address configured in our machine using recvfrom ? (2 Replies)
Discussion started by: Gopi Krishna P
2 Replies

7. Programming

Help with socket programming in C

hi guys i got this code trying to make connection between the server and multi clients but when i do ./server i got message server waiting then when i run ./client it says client 1 nosuch file i dont know whats that should i use any argument plz help how to compile and run and whats the expected... (1 Reply)
Discussion started by: kedah160
1 Replies

8. Programming

socket accept() keeps looping

I'm using C/ C++ with gcc on Linux. I've a server socket where accept() is called on the socket inside a while() loop. The problem I am facing is that the first call to accept is blocking (i.e., the program waits for the first connection) but as soon as I fork afterwards (so that the child process... (2 Replies)
Discussion started by: jaywalker
2 Replies

9. Programming

socket programming

how to include socket.h in visual studio 2005.. (2 Replies)
Discussion started by: asd123
2 Replies

10. Shell Programming and Scripting

How to write a shell script to automatically accept return key with out user intervention?

Hi Friends, i am creating a shell script which is accepting file name as input parameter from Java and invoking finacle service. The service will accpet text file,B2k_session id,etc and upload the text file data in finacle database. My shell script looks like this:- #! /bin/ksh... (2 Replies)
Discussion started by: vadlamudy
2 Replies
BINDRESVPORT(3) 					     Linux Programmer's Manual						   BINDRESVPORT(3)

NAME
bindresvport - bind a socket to a privileged IP port SYNOPSIS
#include <sys/types.h> #include <netinet/in.h> int bindresvport(int sockfd, struct sockaddr_in *sin); DESCRIPTION
bindresvport() is used to bind a socket descriptor to a privileged anonymous IP port, that is, a port number arbitrarily selected from the range 512 to 1023. If the bind(2) performed by bindresvport() is successful, and sin is not NULL, then sin->sin_port returns the port number actually allo- cated. sin can be NULL, in which case sin->sin_family is implicitly taken to be AF_INET. However, in this case, bindresvport() has no way to return the port number actually allocated. (This information can later be obtained using getsockname(2).) RETURN VALUE
bindresvport() returns 0 on success; otherwise -1 is returned and errno set to indicate the cause of the error. ERRORS
bindresvport() can fail for any of the same reasons as bind(2). In addition, the following errors may occur: EACCES The caller did not have superuser privilege (to be precise: the CAP_NET_BIND_SERVICE capability is required). EADDRINUSE All privileged ports are in use. EAFNOSUPPORT (EPFNOSUPPORT in glibc 2.7 and earlier) sin is not NULL and sin->sin_family is not AF_INET. CONFORMING TO
Not in POSIX.1-2001. Present on the BSDs, Solaris, and many other systems. NOTES
Unlike some bindresvport() implementations, the glibc implementation ignores any value that the caller supplies in sin->sin_port. SEE ALSO
bind(2), getsockname(2) COLOPHON
This page is part of release 3.44 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/. 2008-12-03 BINDRESVPORT(3)
All times are GMT -4. The time now is 11:22 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy