## Simple Network Program Difficulties

Simple Network Program Difficulties
# 1
03-17-2002
Simple Network Program Difficulties

I'm trying to write 2 programs, client & server, that communicate with integers, however, all resources I have found on the net assume that you want to send and recieve information as a character array. I don't want to send my integers as characters, I want to send them as ints (casting them to characters makes them take more space). Does anyone know how to do this? Here is my working code for sending & receiving characters:

char rcvMessageChars[STRING_SIZE]; /* char message */
char sndMessageChars[STRING_SIZE];

write(newsockfd, sndMessageChars, STRING_SIZE);

Another quick question - is there any *easy* way to generate random integers in a certain range? i.e. 1-1000 instead of 1-2^16 ?

How about generating random lowercase characters a-z?

 Mistwolf View Public Profile for Mistwolf Find all posts by Mistwolf
# 2
03-17-2002
Re: Simple Network Program Difficulties

Quote:
Originally posted by Mistwolf
I don't want to send my integers as characters, I want to send them as ints (casting them to characters makes them take more space).
No it doesn't. If your int is, say, 4 bytes long, then casting will give you an array of 4 characters. But see this post for a discussion of the macros you should use.

Quote:

Another quick question - is there any *easy* way to generate random integers in a certain range? i.e. 1-1000 instead of 1-2^16 ?
If "oldrand" is a random number in the range 1 to 2^16 then use something like:
mymax = 1000;
newrand = oldrand*mymax/(2^16);

But take a look at the docs for your random number generator. Is the range 2^16 or 2^15? You want to get this right.

Quote:

How about generating random lowercase characters a-z?
Same problem really:
mymax = (int)'z' - (int)'a' + 1;
newrand = oldrand*mymax/(2^16);
ranchar = (char) ((int)'a' + newrand);
 Perderabo View Public Profile for Perderabo Find all posts by Perderabo
# 3
03-19-2002
I wonder if you speak about two kinds of 'characters' lets say that an array contains

"ABCD" - those are four characters.
If you treat that as an integer you get the number
1145258561, or 0x44434241 - this is probaby what the original poster meant - _converted_ to characters, a number will take more space.
But any sequence of bytes can be seen as anything, char, float, char*, struct foo*,

So, when a network protocol sends 'characters'- you can make those characters mean anything you want, put two together, and you have a 16 bit short, etc.
But beware of how your machine stores integers!
The bytes above may have looked like
"BADC" on some machines to give the same number!
If I am not mistaken, I think the IBM PC is one of them ...

Look at
man htonl
man htons

Then you will understand why it just sends 'characters'- to make it an 'int'you use one of those functions, that puts the bytes in the right 'network'order, and put them back to local 'machine' order.

I often randomize characters with the % operator.

rand() % 10 gives 0-9

rand() % ('z'-'a') + 'a' is also an interesting contruct

Some fun: Remember that characters, int, floats and all that are really just bits.
If you want char is a certain range, maybe you can just chop off some bits!
0123456701234567
1001010011101011
0000111110000000 <- maybe you just want those
-----------------
0000010010000000

This would make it fast by just using one machine op,

AND byte, 000011111

Last edited by AtleRamsli; 03-19-2002 at 07:27 AM..
 AtleRamsli View Public Profile for AtleRamsli Find all posts by AtleRamsli

## A simple C program query ...

Given the following code inside the function ext3_write_super(): (It's there in Linux kernel 2.6.27.59) static void ext3_write_super (struct super_block * sb) { if (mutex_trylock(&sb->s_lock) != 0) BUG(); sb->s_dirt = 0; } The conditional test at if...

## Help with creating a simple program!!

i am new to shell scripting!! i am making this program in bourne shell, that asks the user to input "Hello (their name)" or "question (their name)", any other input, "ERROR" will be outputted. if they input "Hello (name)", i want to out saying Hello (name) but if they input "question (name)", i...

## Help with simple program. (beginner)

Hey all, Writing a program that searches for a username and if they are online creates a 'beep' and sends the username and date to a log file. the error i am getting is: paul.obrien16@aisling:~/os\$ bash checklogin : command not found Enter username paul.obrien16 ': not a valid...

## simple program help required

The circumfrence of a circle is #!/usr/bin/perl print 2 * 3.141592654 * 12.50 \n"; # pi= 3.141592654 # r= 12.50 I need a simple program showing me all the steps..to modify the above to prompt for and accept a radius from the person running the...

## What's wrong with this simple program in APUE?

I start wetting my toes in Linux programming. I tried the first program myls.c in Advanced Programming in the Unix Environment. #include <sys/types.h> #include <dirent.h> #include "apue.h" int main(int argc, char *argv) { DIR *dp; struct...

## Xlib simple program.

I don't know if it is right to ask you this. Can someone help me write a simple Xlib program,with button on it,and all that button do is switch 2 messages. I have tried and tried,but never get past Hello World. Can someone help me please? ---------- Post updated at 10:17 PM ---------- Previous...

## Creating simple shell program

Hi, I'm new to UNIX shell programming... can anyone help in doing the following : 1) create a text file named "Model File" having following columns : Name Number Physics Chemistry 2) prompt user to n rows enter the name, number, physics ,chemistry 3) display the entire columns and rows...

## Simple program but problem-pls Help

Hi All, I have problem in the following shell script (problem in 2and3 line i guess) #!/bin/sh set value1 = 90; set value2 = 70; if ; then echo "\$value1 is normal" else echo "\$value2 is abnormal" fi when executed output: \$ value_test.sh (Enter) is abnormal Neither it's printing...

## a simple chat program

any suggestions on how i could create a simple chat program between two terminals using pipes? thanks

## QUESTION...simple program?

I am new to the unix/linux environment. AND........ I need to create a mini shell..that displays prompt (i.e., READY:\$), accepts a command from std-in, and prints the command and any parameters passed to it. HELP!!!!