IBM helps me to solve socket problem in AIX 3.1

jian at kuhub.cc.ukans.edu jian at kuhub.cc.ukans.edu
Wed Feb 6 05:16:35 AEST 1991


Hi,

I posted a message about I had troubles dealing with socket system in AIX 3.1
Now, I get help from IBM and my problem has been solved. It was my 
misunderstanding of socket system. I always thought that the socket 
communication is packet oriented. Attached is the message about why 
I had problem with the socket system in AIX 3.1. I am favorably impressed
with IBM's services.

Jian

jian at kuhub.cc.ukans.edu


------------------------------------------------------------------------------

	Jian,
	  
	I've found the reason why you are seeing a problem in
	your program. The recv() system call returns the actual
	number of bytes placed in the buffer. This is NOT necessarily 
	the size that you supplied (the Sun man page concurs). One of 
	the recv() calls eventually returns a size less than your frame. 
	Therefore the next recv() would return the last portion of the 
	previous frame and the beginning of the next. I was able to 
	make your program work by looping on the recv() until I got 
	the whole frame.

	The reason the frame is fragmented is because the sender
	is much faster than the receiver (the sender loops and
	sends while the recevier has to check). TCP sees that the
	receiver is backed up so it throttles back. This causes
	the short packet. There is no "record" concept in TCP so
	your frame is broken up.

	I think this situation is aggravated in the 6000 because
	of the processor speed. I would suspect you could 
	reproduce it on a Sun by having the receiver do a sleep(1)
	after each recv().

	Hope all this makes sense! Let me know how things work out.

	Greg



More information about the Comp.unix.aix mailing list