Sponsored Content
Full Discussion: Help with sockets in C
Top Forums Programming Help with sockets in C Post 302510097 by Corona688 on Friday 1st of April 2011 02:03:47 PM
Old 04-01-2011
Quote:
Originally Posted by omega666
your code is only reading one line (as in stops at a \n), but my data that's being sent, can include more than 0 \n's, could that be causing the problem?
You could use something else to mean end-of-message, how about a carriage return, '\r'?

Code:
int pos=0;
bzero(buffer,MAXDATASIZE);

// Stop once we have an entire single record
while((buffer[pos] != '\r') && (pos < MAXDATASIZE))
{
        // Put new data 'pos' bytes ahead, so we don't overwrite the old
        ssize_t b=read(socket_fd, buffer+pos, 1); 
        if(b > 0) pos+=b;
        else break; // b<=0 means socket closed or socket error, so give up.
}

// Remove the carriage return
buffer[pos-1]='\0';

Quote:
maybe somewhere (not at the end) in the data i send, there is a \0...?
I don't think so. You could compare how many bytes you read() against how many bytes str_len sees, if they disagree a lot there's a NULL or newline in the middle.

Wait! That's it! Your str_len function stops at a newline and some of your messages have a newline in the middle!

You still need to divide it into records somehow though. The code can't be relied on if you don't.
 

10 More Discussions You Might Find Interesting

1. Programming

sockets...

Hi ! I had a verry simple question to ask... In unix when we create pipes.. the unnamed pipes that is... is there any way to access those pipes outside the code ? Another thing.. do sockets have an entry in the inode table ? TIA, Devyani. (1 Reply)
Discussion started by: devy8
1 Replies

2. Programming

Sockets!?!?!?!?!?!

I am looking for a way to have a program listen on a port (example: 8000) for communication I will be sending via that port to it(Linux Kernel machine). Once it recieves an appropiate command I need it to run a .bat file in linux. I know what I need to do but I am running into a few problems:... (8 Replies)
Discussion started by: bigB8210
8 Replies

3. Programming

sockets

Hai, How cani declare socket and collect the data in a string varialbe. Since i am new to this i am asking this. Can we connect multiple port. Thank you. (6 Replies)
Discussion started by: arunkumar_mca
6 Replies

4. UNIX for Dummies Questions & Answers

sockets

how do i mointor how many sockets are opened from a particular foriegn address? (2 Replies)
Discussion started by: kirpond
2 Replies

5. Solaris

Sockets in use

Is there a way to see what sockets are in use? The developers here are getting some defunct processes and they would like to get a socket list. This is on a Solaris 8 machine. Thanks! (1 Reply)
Discussion started by: kjbaumann
1 Replies

6. IP Networking

sockets and firewall

Is it possible to trace the packages and the statuses of client's and/or server's sockets by the UNIX network administrative tools? Two applications interact via sockets. There is no problem if they stay in the same network segment. If their hosts connected through the firewall then they aren't... (4 Replies)
Discussion started by: gogogo
4 Replies

7. Programming

need help with sockets

anyone and teach me how to save standard output to a file in a client/server socket. I know how to read them to the screen but i'm not quite sure how to save them to a file. my read to screen file code: memset(line, 0x0, LINE_ARRAY_SIZE); while (recv(connectSocket, line, MAX_MSG, 0) >... (1 Reply)
Discussion started by: crunchyuser
1 Replies

8. Programming

Sockets

Hi,i now moved into a different section where i need to use sockets. i am completely nill in sockets. can some body please provide me what are the requirements for a socket. to use sockets in c. thanks (1 Reply)
Discussion started by: MrUser
1 Replies

9. Red Hat

Sockets

hai guys, I'm doing a project in which one server communicates with several clients. How can i do it when i have different port numbers???:confused: (0 Replies)
Discussion started by: rajeshb6
0 Replies

10. Programming

Any example about sockets in C++?

Hi, i am student, think learning about c++, someone has a example the how establish a conection with sockets :b::b: (1 Reply)
Discussion started by: mmartinez
1 Replies
array_allocate(3)					     Library Functions Manual						 array_allocate(3)

NAME
array_allocate - make sure array has at least n elements allocated SYNTAX
#include <array.h> void* array_allocate(array* x, uint64 membersize, int64 pos); array x; int64 pos; t* p = array_allocate(&x,sizeof(t),pos); DESCRIPTION
array_allocate makes sure that enough bytes are allocated in x for at least pos+1 objects of type t. (The size of t must be positive; oth- erwise the effects are undefined.) If not enough bytes are allocated (or x is unallocated), array_allocate allocates more bytes, moving the dynamically allocated region if necessary. array_allocate often allocates somewhat more bytes than necessary, to save time later. array_allocate then makes sure that the number of bytes initialized covers at least those pos+1 objects. If not enough bytes are initial- ized, array_allocate initializes more bytes (setting them to 0), up to exactly the end of the pos+1st object. array_allocate then returns a pointer to the pos+1st object; i.e., object number pos, with objects numbered starting at 0. This pointer can be used to change or inspect the object. The pointer can continue to be used through subsequent calls to array_get, array_start, array_length, and array_bytes, but it must not be used after any other operations on this array. If something goes wrong, array_allocate returns 0, setting errno appropriately, without touching x. In particular, array_allocate returns 0 if o x has failed, or o pos is negative, or o not enough memory is available. array_allocate does not change x to have failed; if you want to do that, use array_fail. SEE ALSO
array_get(3), array_start(3), array_fail(3) array_allocate(3)
All times are GMT -4. The time now is 02:28 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy