02-05-2015
Quote:
Originally Posted by
Kovalevski
It is a very good point the MTU length, first of all thank you for this info because I didn't know , but when I tested the program, many messages arrived to the server
How large are your messages?
TCP is not received in dependably-sized chunks, it is a
stream. If they sent 30 bytes and you only read 2, that's okay, just read 28 more. Conversely, if they sent 5000 bytes and you got 1000, just keep reading, you'll get the rest eventually.
If the lengths are variable, you should encode them as part of the stream. Otherwise you won't know how much to expect and, as you've discovered, getting the "right" size from recv() is not dependable, mostly because there is no such thing.
I'm guessing you overloaded it until it was unable to cope. It started delivering data immediately instead of bundling multiple packets together politely.
Or, the server might even have been running out of memory. No kind of connection can cope with that. Each TCP connection takes a good chunk of it.
Last edited by Corona688; 02-05-2015 at 11:15 AM..
10 More Discussions You Might Find Interesting
1. IP Networking
I am trying to connect via DBACCESS and Informix server to a server on a different computer. When I execute the connect command from dbaccess I get the following message,
Exec format error cannot bind a name to the port.
As far as I know the port is not being used by another client.
How... (1 Reply)
Discussion started by: lopez
1 Replies
2. IP Networking
Hi Eveyone,
I have A small problems maybe some one can help me. I'm running a small network at home with internet access. Two PC's have Win XP and one has Win98se. I have them all hook up on a SMC router. ALL windows firewall are off and and harddrive sharing is on. I am using DCHP network... (3 Replies)
Discussion started by: Peterh
3 Replies
3. Solaris
I am running a Java Client on Solaris 9 which communicates with the Server using TCP/IP.
The client transmits a FIN packet to server. The server sends a ACK, FIN enters LAST_ACK state and then waits for ACK from client. The client did not respond back leaving the server in LAST_ACK itself. Also... (0 Replies)
Discussion started by: diarun
0 Replies
4. Programming
There is a server and a client,when client send a message to server,server can send a reply to client. The status of server and client is ESTABLISHED.Then I halt the client,I find the server status is CLOSE_WAIT and the client status is FIN_WAIT_2. Many minutes passed,I find the the server status... (1 Reply)
Discussion started by: konvalo
1 Replies
5. Programming
Greetings!
I am attempting to write a *basic* network client in C. I have manage to create a socket but I have doubts as far as using AF_INET vs AF_UNIX.
At the present time, my client runs with AF_INET. Is AF_UNIX faster across hosts using the same OS flavor (Red Hat)? What is the difference... (1 Reply)
Discussion started by: Alan Christen
1 Replies
6. Red Hat
how the data from disk is loaded into memory and then it transfered to tcp/ip packet.
how i can find how many pages are loaded into memory by that process
what is the rate of context switch for that process. (5 Replies)
Discussion started by: amar20
5 Replies
7. Shell Programming and Scripting
how the data from disk is loaded into memory and then it supplied to tcp/ip packet.
how i can trace the no of pages loaded in memory by that process and rate of context switch for that process. (1 Reply)
Discussion started by: amar20
1 Replies
8. Programming
Hello @ all,
I hope you can give me some advice :b:
I will be following code for a tcp server and doStuff () function, the
clients treated. From some point, I have several identical
clients (zombies, I think), the same records in the database
write. Has anyone an explanation? What can I... (1 Reply)
Discussion started by: yumos
1 Replies
9. IP Networking
Hello all.
This is my first post and thank you for your forum.
Here is my question.
I have a simple setup at home and I was capturing some data with wireshark.
Data between a workstation and the web server, requesting a page.
Simple enough.
Now when I open wireshark, I apply the TCP... (4 Replies)
Discussion started by: squaresphere
4 Replies
10. UNIX for Advanced & Expert Users
Hi all.
I have a really really weird problem that I've been working on for days.
The problem manifested as users cannot connect to our web servers via SSH when they're using our wireless network. Here's where it gets weird:
- Clients from anywhere other than the wireless subnet can... (4 Replies)
Discussion started by: pileofrogs
4 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)