Sponsored Content
Operating Systems AIX TCP/IP socket binding problem Post 302250567 by adiaconou on Thursday 23rd of October 2008 05:11:51 PM
Old 10-23-2008
TCP/IP socket binding problem

I have what appears to be a unique socket problem, although admittedly my tcp/ip programming experience is relatively limited.

I have a AIX server process using TCP/IP berkely sockets, and a Windows (C#) process. The windows process takes input from a user and sends a message to the Unix process to perform a system call.

If I kill the Unix process prematurely (ctrl-c), sometimes that socket is left bound to the port and the client has no idea that the process is dead. When I do a netstat -a | grep port, as long as I have the windows process running the connection to that socket is in ESTABLISHED state, and if I kill the windows process it goes to LISTENING state. It can take several hours (sometimes longer) for this socket to die, and obviously I cannot rebind. I have tried the setsockopt() with SO_REUSEADDR set, but I am still unable to re-bind to that port.

I've noticed that this ONLY happens if I have sent a message from the windows process since starting that windows process. If I start the windows process, connect to the unix server process, but don't send any messages, then I can kill and restart the unix process all day without the port getting stuck. Once the port gets stuck, it doesn't matter if I close the Windows process or not, there is nothing I can do to rebind to that port.

Is it possible there is some kind of cross-platform IP implementation conflict causing this to happen? A coworker set up a client-server echo program which sends data back and forth while regularly killing and restarting the server process. He has no problems with this, but it is only run on the AIX machine.
 

10 More Discussions You Might Find Interesting

1. Programming

Confusion about TCP/IP socket programming

Hello there chaps. First of all, i'm no TCP/IP-wiz, so forgive me if this is a stupid question. I've been messing around with filetransfer using sockets, and there is one thing that confuses me. This is how it's set up: A server app listens on a port for a client connection. When it... (3 Replies)
Discussion started by: crippe
3 Replies

2. UNIX for Dummies Questions & Answers

Which application has a TCP socket open

If I do a netstat -a I can see all the sockets currently open, is there a way that I can tell which application is holding open these sockets ? (3 Replies)
Discussion started by: murphyboy
3 Replies

3. Programming

problem receiving data from TCP socket

Hi all, I'm writing a socket program which sends a structure from one machine to another. When I run my client first time it runs well, however after the first time I couldn't receive all the data inside the structure (it is like, half of the array is received and the other half is not set). I... (1 Reply)
Discussion started by: SaTYR
1 Replies

4. Programming

Problem with socket binding - "system" call

Hi, I am having an issue with using sockets. I have a program which binds to a socket and listen on it. Later I spawn a thread to handle some function. In the new thread created I need to call a shell script which executes the specified function. Here I am using a system command to call the... (5 Replies)
Discussion started by: Janardhanbr
5 Replies

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

6. IP Networking

Packets sent from Linux TCP socket

Hello, Our software is using a TCP socket (AF_INET, SOCK_STREAM) to communicate with an Ethernet device. When we send a message, the message object writes itself in full onto the socket's stream buffer before the software invokes send() from socket.h. I'm still researching, but have 2... (1 Reply)
Discussion started by: bix_20002000
1 Replies

7. Shell Programming and Scripting

Read and write to tcp socket

Hello all, I have a requirement to read and write to a tcp socket from an HP-UX shell script. I see a /dev/tcp character device on my servers: crw-rw-rw- 1 root root 72 0x00004f Mar 28 18:37 /dev/tcp So I believe this is what I should use. The problem is that all the... (2 Replies)
Discussion started by: lupin..the..3rd
2 Replies

8. Solaris

Tcp Socket (Connection refused) to my server box

I installed a fresh copy of Solaris 7 and present up my ip and domain for my web services but when I try to connect to it I get the following error; TCPActiveOpen: connect failed tcp/192.168.1.148/7900: 146 (Connection refused). the port is open in my router but I don't no were to add it in... (5 Replies)
Discussion started by: Wpgn
5 Replies

9. Solaris

Installing TCP-MUX protocol socket help required.

I been looking for a good guide or some help on how to install and setup TCP-MUX protocol socket on my Solaris 7 servers. Can anyone point me in right direction of help me ? Thanks (5 Replies)
Discussion started by: Wpgn
5 Replies

10. AIX

How to repair a TCP/IP socket in state: CLOSE_WAIT?

Hi The clients connect to my server -using port 9130. But no client could connect to my server at this time. I've checked already and this is the result netstat -Aan|grep -v 127.0.0.1|grep 9130|pg f10006000abcb398 tcp4 10313 0 10.0.89.81.9130 10.158.70.24.1705 CLOSE_WAIT... (8 Replies)
Discussion started by: bobochacha29
8 Replies
tcp(4p) 																   tcp(4p)

Name
       tcp - Internet Transmission Control Protocol

Syntax
       #include <sys/socket.h>
       #include <netinet/in.h>

       s = socket(AF_INET, SOCK_STREAM, 0);

Description
       The  TCP  protocol  provides  reliable,	flow-controlled,  two-way  transmission of data.  It is a byte-stream protocol used to support the
       SOCK_STREAM abstraction.  TCP uses the standard Internet address format	and,  in  addition,  provides  a  per-host  collection	of  ``port
       addresses''.   Thus,  each address is composed of an Internet address specifying the host and network, with a specific TCP port on the host
       identifying the peer entity.

       Sockets utilizing the TCP protocol are either ``active'' or ``passive''.  Active sockets  initiate  connections	to  passive  sockets.	By
       default	TCP  sockets  are created active; to create a passive socket the system call must be used after binding the socket with the system
       call.  Only passive sockets can use the call to accept incoming connections.  Only active sockets can use the call to initiate connections.

       Passive sockets can ``underspecify'' their location to match incoming connection requests from multiple networks.  This	technique,  termed
       ``wildcard addressing'', allows a single server to provide service to clients on multiple networks.  To create a socket that listens on all
       networks, the Internet address INADDR_ANY must be bound.  The TCP port can still be specified at this time.  If the port is not	specified,
       the  system  will  assign one.  Once a connection has been established,	the socket's address is fixed by the peer entity's location.   The
       address assigned the socket is the address associated with the network interface through which packets are being transmitted and  received.
       Normally, this address corresponds to the peer entity's network.

       TCP  supports  one  socket option that is set with and tested with Under most circumstances, TCP sends data when it is presented; when out-
       standing data has not yet been acknowledged, it gathers small amounts of output to be sent in a single packet, once an  acknowledgement	is
       received.   For a small number of clients, such as window systems that send a stream of mouse events that receive no replies, this packeti-
       zation may cause significant delays.  Therefore, TCP provides a Boolean option, TCP_NODELAY (from to defeat  this  algorithm.   The  option
       level for the call is the protocol number for TCP, available from

Diagnostics
       A socket operation may fail with one of the following errors returned:

       [EISCONN]	   Try to establish a connection on a socket which already has one.

       [ENOBUFS]	   The system runs out of memory for an internal data structure.

       [ETIMEDOUT]	   A connection was dropped due to excessive retransmissions.

       [ECONNRESET]	   The remote peer forces the connection to be closed.

       [ECONNREFUSED]	   The remote peer actively refuses connection establishment (usually because no process is listening to the port).

       [EADDRINUSE]	   An attempt is made to create a socket with a port that has already been allocated.

       [EADDRNOTAVAIL]	   An attempt is made to create a socket with a network address for which no network interface exists.

See Also
       getsockopt(2), socket(2), inet(4f), intro(4n), ip(4p)

																	   tcp(4p)
All times are GMT -4. The time now is 05:04 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy