Sponsored Content
Special Forums IP Networking Port number of socket returned by accept() Post 302336286 by idelovski on Tuesday 21st of July 2009 06:31:23 PM
Old 07-21-2009
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 sense: it prints that the client uses port 30152. Next time I run it is 30153 and next time is 30154 and so on.

Here is the code of the server, accept() call and printf() call.

Code:
      struct sockaddr_in  clntAddr, testAddr;
      socklen_t           clntAddrLen = sizeof (struct sockaddr_in);

      int                 clntSock = accept (servSock, (struct sockaddr *)&clntAddr, &clntAddrLen);

      if (clntSock < 0)
         DieWithSystemMessage ("accept() failed");

      char  clntName[INET_ADDRSTRLEN];  // str to contain client address
      
      if (inet_ntop(AF_INET, &clntAddr.sin_addr.s_addr, clntName, INET_ADDRSTRLEN))
         printf ("Handling client %s/%hu\n", clntName, ntohs(clntAddr.sin_port));

I am on Mac (10.5) and the book is TCP/IP Sockets in C. (Full source code link - TCPEchoClient4.c & TCPEchoServer4.c + DieWithMessage.c & Practical.h)
 

10 More Discussions You Might Find Interesting

1. Programming

socket on serial port

Does anyone know if it's possible to send socket by a serial port ? If yes, how can I find on Irix the value of my serial ports to use with this function : serverSockAddr.sin_port = ? Thanks for all responses ! Kintoo (2 Replies)
Discussion started by: kintoo
2 Replies

2. UNIX for Dummies Questions & Answers

Socket programming : Accept return 0.

I have a server and client code. My server says accept and my client says a connect. After accept when i print inet_ntoa(cin.sin_addr) by running the client on same machine i get 127.0.01 but accept returns a zero. Now when i try to do a recv from the client the recv never waits for a send. It... (7 Replies)
Discussion started by: abc.working
7 Replies

3. UNIX for Dummies Questions & Answers

Socket programming:One server two port

I want my server socket to listen on two ports in my machine. How do i achieve it? I will have two clients one connecting to 1 port and another to a different port. So my server needs to listen to both. Thanks. (1 Reply)
Discussion started by: abc.working
1 Replies

4. Shell Programming and Scripting

number of lines returned from a grep command

hi all, from a shell (ksh) script, i am doing a 'grep'. how do i find out the number of lines returned from that 'grep' command ?? thanks in advance. (4 Replies)
Discussion started by: cesarNZ
4 Replies

5. 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

6. UNIX for Dummies Questions & Answers

permission to bind a socket to port 843?

I have written a flash socket security file server in PHP. The basic idea is that when Flash Player connects via socket to a server, the first thing it does is connect to port 843 and send a request for a 'socket policy file' by sending the string <policy-file-request/>. The problem I have is... (5 Replies)
Discussion started by: sneakyimp
5 Replies

7. 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

8. Programming

Using socket to test a TCP port

Hello, I'm trying to write a small c application to test a tcp port. This works fine for the most part but the default timeout on the connect is very long. I have been reading many posts but and it looks like I need to set the socket to be non-blocking and poll for a result. I have been totally... (2 Replies)
Discussion started by: tjones1105
2 Replies

9. IP Networking

Get process id and port from the socket

Hello, Please help me in getting the process id and the port number from the socket netstat -Aan|grep -i closed f100050010b133b8 tcp 0 0 *.* *.* CLOSED f1000500119b53b8 tcp4 0 0 *.* *.* ... (3 Replies)
Discussion started by: Vishal_dba
3 Replies

10. Solaris

How to find port number wwn of particular port on dual port HBA,?

please find the below o/p for your reference bash-3.00# fcinfo hba-port HBA Port WWN: 21000024ff295a34 OS Device Name: /dev/cfg/c2 Manufacturer: QLogic Corp. Model: 375-3356-02 Firmware Version: 05.03.02 FCode/BIOS Version: BIOS: 2.02; fcode: 2.01;... (3 Replies)
Discussion started by: sb200
3 Replies
AUSCOPE(1)						      General Commands Manual							AUSCOPE(1)

NAME
auscope - Network Audio System Protocol Filter SYNOPSIS
auscope [ option ] ... DESCRIPTION
auscope is an audio protocol filter that can be used to view the network packets being sent between an audio application and an audio server. auscope is written in Perl, so you must have Perl installed on your machine in order to run auscope. If your Perl executable is not installed as /usr/local/bin/perl, you should modify the first line of the auscope script to reflect the Perl executable's location. Or, you can invoke auscope as perl auscope [ option ] ... assuming the Perl executable is in your path. To operate, auscope must know the port on which it should listen for audio clients, the name of the desktop machine on which the audio server is running and the port to use to connect to the audio server. Both the output port (server) and input port (client) are automati- cally biased by 8000. The output port defaults to 0 and the input port defaults to 1. ARGUMENTS
-i<input-port> Specify the port that auscope will use to take requests from clients. -o<output-port> Determines the port that auscope will use to connect to the audio server. -h<audio server name> Determines the desktop machine name that auscope will use to find the audio server. -v<print-level> Determines the level of printing which auscope will provide. The print-level can be 0 or 1. The larger numbers provide greater output detail. EXAMPLES
In the following example, mcxterm is the name of the desktop machine running the audio server, which is connected to the TCP/IP network host tcphost. auscope uses the desktop machine with the -h command line option, will listen for client requests on port 8001 and connect to the audio server on port 8000. Ports (file descriptors) on the network host are used to read and write the audio protocol. The audio client auplay will connect to the audio server via the TCP/IP network host tcphost and port 8001: auscope -i1 -o0 -hmcxterm auplay -audio tcp/tcphost:8001 dial.snd In the following example, the auscope verbosity is increased to 1, and the audio client autool will connect to the audio server via the network host tcphost, while displaying its graphical interface on another server labmcx: auscope -i1 -o0 -hmcxterm -v1 autool -audio tcp/tcphost:8001 -display labmcx:0.0 SEE ALSO
nas(1), perl(1) COPYRIGHT
Copyright 1994 Network Computing Devices, Inc. AUTHOR
Greg Renda, Network Computing Devices, Inc. 1.9.3 AUSCOPE(1)
All times are GMT -4. The time now is 04:52 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy