08-25-2005
how to pass integer
i am writing a client and server program
client program
main()
{
int sockfd,n;
char str[20];
struct sockaddr_in sock;
if ((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
{
perror("SOCKET ERROR");
}
bzero(&sock,sizeof(sock));
sock.sin_family=AF_INET;
sock.sin_port=7500;
sock.sin_addr.s_addr=inet_addr("192.127.137.251");
if(connect(sockfd,(struct sockaddr*)&sock,sizeof(sock))<0)
{
perror("CONNECT ERROR :");
}
strcpy(str,"i am here");
write(sockfd,(char *)str,strlrn(str)+1);
//close(sockfd);
socket program
main()
{
int sockfd,connfd,clientlen;
char str[20];
struct sockaddr_in sock,client;
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
{
perror("SOCKET ERROR ");
}
bzero(&sock,sizeof(sock));
sock.sin_family=AF_INET;
sock.sin_port=7500;
sock.sin_addr.s_addr=inet_addr("192.127.137.251");
if((bind(sockfd,(struct sockaddr*)&sock,sizeof(sock)))<0)
{
perror("BIND ERROR:");
}
listen(sockfd,3);
clientlen=sizeof(client);
if((connfd=accept(sockfd,(struct sockaddr*)&client,&clientlen))<0)
{
perror("CONNECTION ERROR :");
}
read(connfd,(char *)str,20);
printf("%s ",str);
close(connfd);
close(sockfd);
}
now the problem is i have to pass a integer or bool variable rather than string
how can i do this
10 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
i have two rules in my pf.conf file, "pass in all" and "pass out all"
i was having issues with getting pf working to begin with, so i went with
starting from nothing and working on up.
i have an ultrasparc ultra1 200e, with an added 4-port fast ethernet sbus
card, running "3.4 GENERIC#85... (4 Replies)
Discussion started by: xyyz
4 Replies
2. Shell Programming and Scripting
Hi,
I did a df|awk| command and it returns a percentage "94%",
how could I only get the integer part
"94" out of it, so I can compare it to another number,
I knwo that I have to pipe it to sth, but "grep " did not work, it still give me number WITH the percentage, does someone know what... (3 Replies)
Discussion started by: ericaworld
3 Replies
3. Shell Programming and Scripting
Hi ,
I have code like below in my ksh script, but getting an error as SP2-0253: data item 1 ("SAMPLE_ID") will not fit on line , pls help me. thanks.
if (( CHECKS == 0 )) || (( CHECKS == 1 ))
then
V_SAMPLE_ID=$( $ORACLE_HOME/bin/sqlplus -S / <<EOF
whenever sqlerror exit 1... (5 Replies)
Discussion started by: bennichan
5 Replies
4. Shell Programming and Scripting
i have created a script that will reverse any given ineter.
#!/bin/ksh
echo "Enter the number"
read n
if
then
a=`expr $n / 10`
b=`expr $n % 10`
c=`expr $b \* 10 + $a`
fi
echo $c
---------------------------------------------------------------------
the problem with this script... (4 Replies)
Discussion started by: ali560045
4 Replies
5. UNIX for Dummies Questions & Answers
Hi all,
is there an easy way to convert integer to string in bash?
I have numbers like 1, 2, ..., 112, ...
and I would like to get
001 002 003 004 ...
Thank you,
Sarah (4 Replies)
Discussion started by: f_o_555
4 Replies
6. Shell Programming and Scripting
Hi folks,
I have a value like A12,i could able to change this into integer using typeset as below
typeset -i A12
But, I need your advice to change the values like 1A2 or 12A into integer.
Thanks in advance.
Thanks,
Sathish (3 Replies)
Discussion started by: bsathishmca
3 Replies
7. Solaris
hello,
i am writing a script that takes the UID from the PASSWD and then i want
to increse the Number by one. for the Next user.
i cannot get this to work that a variable is as interger
example:
set i = 0
set $i = $+1
it's in tcsh if it's mather (10 Replies)
Discussion started by: shatztal
10 Replies
8. Shell Programming and Scripting
Hi fellows!!
i'm doing something which is not working out for me properly which i don't understand why
nowdate=`date +%s`
echo $nowdate
now the problem how to convert a date which is stored in a variable
mydate="22/Oct/2011"
mydate=`date -d '$mydate' +%s`
it gives error... (11 Replies)
Discussion started by: me_newbie
11 Replies
9. Shell Programming and Scripting
hi,
how to I do this?
i="4.000"
if ; then
echo "smaller"
fi
how do I convert the "4.000" to 4?
Thanks! (4 Replies)
Discussion started by: h0ujun
4 Replies
10. Programming
Hello and Good day, I am currently studying C and I just finished learning about variables mainly those of integer type.
I am wondering if the list below are all there is to integer variables and there are still more that i have to learn.
Here are the list:
Char
Short
int
long
long long... (3 Replies)
Discussion started by: split_func0
3 Replies
LEARN ABOUT LINUX
sendmmsg
SENDMMSG(2) Linux Programmer's Manual SENDMMSG(2)
NAME
sendmmsg - send multiple messages on a socket
SYNOPSIS
#define _GNU_SOURCE /* See feature_test_macros(7) */
#include <sys/socket.h>
int sendmmsg(int sockfd, struct mmsghdr *msgvec, unsigned int vlen,
unsigned int flags);
DESCRIPTION
The sendmmsg() system call is an extension of sendmsg(2) that allows the caller to transmit multiple messages on a socket using a single
system call. (This has performance benefits for some applications.)
The sockfd argument is the file descriptor of the socket on which data is to be transmitted.
The msgvec argument is a pointer to an array of mmsghdr structures. The size of this array is specified in vlen.
The mmsghdr structure is defined in <sys/socket.h> as:
struct mmsghdr {
struct msghdr msg_hdr; /* Message header */
unsigned int msg_len; /* Number of bytes transmitted */
};
The msg_hdr field is a msghdr structure, as described in sendmsg(2). The msg_len field is used to return the number of bytes sent from the
message in msg_hdr (i.e., the same as the return value from a single sendmsg(2) call).
The flags argument contains flags ORed together. The flags are the same as for sendmsg(2).
A blocking sendmmsg() call blocks until vlen messages have been sent. A nonblocking call sends as many messages as possible (up to the
limit specified by vlen) and returns immediately.
On return from sendmmsg(), the msg_len fields of successive elements of msgvec are updated to contain the number of bytes transmitted from
the corresponding msg_hdr. The return value of the call indicates the number of elements of msgvec that have been updated.
RETURN VALUE
On success, sendmmsg() returns the number of messages sent from msgvec; if this is less than vlen, the caller can retry with a further
sendmmsg() call to send the remaining messages.
On error, -1 is returned, and errno is set to indicate the error.
ERRORS
Errors are as for sendmsg(2). An error is returned only if no datagrams could be sent.
VERSIONS
The sendmmsg() system call was added in Linux 3.0. Support in glibc was added in version 2.14.
CONFORMING TO
sendmmsg() is Linux-specific.
NOTES
The value specified in vlen is capped to UIO_MAXIOV(1024).
EXAMPLE
The example below uses sendmmsg() to send onetwo and three in two distinct UDP datagrams using one system call. The contents of the first
datagram originates from a pair of buffers.
#define _GNU_SOURCE
#include <netinet/ip.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
int
main(void)
{
int sockfd;
struct sockaddr_in sa;
struct mmsghdr msg[2];
struct iovec msg1[2], msg2;
int retval;
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd == -1) {
perror("socket()");
exit(EXIT_FAILURE);
}
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
sa.sin_port = htons(1234);
if (connect(sockfd, (struct sockaddr *) &sa, sizeof(sa)) == -1) {
perror("connect()");
exit(EXIT_FAILURE);
}
memset(msg1, 0, sizeof(msg1));
msg1[0].iov_base = "one";
msg1[0].iov_len = 3;
msg1[1].iov_base = "two";
msg1[1].iov_len = 3;
memset(&msg2, 0, sizeof(msg2));
msg2.iov_base = "three";
msg2.iov_len = 5;
memset(msg, 0, sizeof(msg));
msg[0].msg_hdr.msg_iov = msg1;
msg[0].msg_hdr.msg_iovlen = 2;
msg[1].msg_hdr.msg_iov = &msg2;
msg[1].msg_hdr.msg_iovlen = 1;
retval = sendmmsg(sockfd, msg, 2, 0);
if (retval == -1)
perror("sendmmsg()");
else
printf("%d messages sent
", retval);
exit(0);
}
SEE ALSO
recvmmsg(2), sendmsg(2), socket(2), socket(7)
Linux 2014-07-08 SENDMMSG(2)