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
aseqnet(1)						      General Commands Manual							aseqnet(1)

NAME
aseqnet - ALSA sequencer connectors over network SYNOPSIS
aseqnet [remotehost] DESCRIPTION
aseqnet is an ALSA sequencer client which sends and receives event packets over network. Suppose two hosts connected by network, hostA as a server and hostB as a client. The ALSA sequencer system must be running on both hosts. For creating the server port, run the following on hostA: hostA% aseqnet sequencer opened: 128:0 Then a user client 128 with port 0 was opened on hostA. (The client number may vary.) For creating the (network-)client port, run aseqnet with the hostname of the server: hostB% aseqnet hostA sequencer opened: 132:0 Now all events sent to hostA:128:0 are transferred to hostB:132:0, and vice versa. The ports created by aseqnet can be connected arbitrary to other sequencer ports via aconnect(1). For example, to connect hostB:132:0 to a MIDI output device 65:0: hostB% aconnect 132:0 65:0 Then events to hostA:128:0 will be delivered to hostB:65:0. The following command plays MIDI on hostB. hostA% pmidi -p 128:0 foo.mid The multiple clients may exist simultaneously. If hostC is connected as a client to hostA, events from from hostA are sent to all con- nected network clients, i.e. hostB and hostC. However, only one connection is allowed from a client to a server. To disconnect network, stop all clients before server by ctrl-C or sending signal to them. The server will automatically quit. OPTIONS
-p port Specify the TCP port number or TCP service name. -s addr Subscribe to the given address for read automatically. -d addr Subscribe to the given address for write automatically. -v Verbose mode. SEE ALSO
aconnect(1), pmidi(1) AUTHOR
Takashi Iwai <tiwai@suse.de>. January 1, 2000 aseqnet(1)
All times are GMT -4. The time now is 09:55 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy