Sponsored Content
Homework and Emergencies Homework & Coursework Questions any one help me to solve this code?? Post 302440799 by saiful_911 on Wednesday 28th of July 2010 09:49:44 AM
Old 07-28-2010
any one help me to solve this code??

this is client server socket program. I have to use in C program code. What I have to do.

1. client connect to the server.
2. than client will first prompt a welcome message that asks the user to enter a username using the keyboard. This username will then be sent to the server.
3. than server, after receiving the username from client, it will send an acknowledgment message to the client.

4. client, after receiving the acknowledgment message from server, it will prompt a message that asks the user to enter the corresponding password.

5. This password will then be sent to the server. after receiving the password from client, will verify the received username and password. If the result is positive, the server will send a success message to the client. If the result is negative, the server will send a failure message to the client.


5.client, after receiving the result message, will print out the result and close the socket. server will close the socket following the client, and keep listening for the next client request.

This is the scenario of the program. kindly please help me to solve this program.

Here I can connnect client and server but the rest of work I can not. My code is below.

Client code is


Code:
Code:
#include	"myfile.h"

int
main(int argc, char **argv)
{
int	 sockfd, n;
char	 recvline[MAXLINE + 1];
struct sockaddr_in	servaddr;

if (argc != 2) {
perror("usage: a.out <IPaddress>");
exit (1);
}


if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("socket error");
exit(1);
}

bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(SERV_PORT);	/* daytime server */
if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0) {
printf("inet_pton error for %s", argv[1]);
exit(0);
}

if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0) {
perror("connect error");
exit(1);
}

while ( (n = read(sockfd, recvline, MAXLINE)) > 0) {
recvline[n] = 0;	/* null terminate */
if (fputs(recvline, stdout) == EOF) {
perror("fputs error");
exit(1);
}
}
if (n < 0) {
perror("read error");
}

exit(0);
}

Server code is


Code:
#include	"myfile.h"
#include	<time.h>

int
main(int argc, char **argv)
{
int	 listenfd, connfd;
struct sockaddr_in	servaddr;
char	 buff[MAXLINE];
time_t	 ticks;

listenfd = socket(AF_INET, SOCK_STREAM, 0);
if (listenfd < 0)
exit(0);

bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT);	/* daytime server */

if (bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0)
exit(0);

if( listen(listenfd, LISTENQ) <0)
exit(0);

for ( ; ; ) {
connfd = accept(listenfd, (struct sockaddr *) NULL, NULL);
if (connfd<0) {
perror("connection failure");
continue;
}

ticks = time(NULL);
snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks));
if( write(connfd, buff, strlen(buff)) < 0) {
perror("error in writing");
}

close(connfd);
}
}


Last edited by jim mcnamara; 07-28-2010 at 10:51 AM.. Reason: code tags
 

8 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to solve this

I have to write an script for.. CUST: 123 trans: some contents CUST: 1234 trans: some contents Now wat i have to do is this: CUST:123 akash trans: some contents CUST:1234 akash1 trans: I have been able to add... (3 Replies)
Discussion started by: akashag22
3 Replies

2. Shell Programming and Scripting

can you solve this code :

I have the below fixed file ..... and the sample code to convert csv ...last week it was working good ....to day i face error ....can you solve ... Note : Iam passing ending positions as variables .... 4 ,5,15 etc.... source.txt : E116015/29/19930E001E000 E122012/23/19940E001E003... (3 Replies)
Discussion started by: satyam_sat
3 Replies

3. Programming

does any one know how to solve?

Hello experts, Here is my code.I can create the database.But I also want it to see standard output.Please see the blocked code.If i use them they show me weired symbols. #include <stdio.h> #include <stdlib.h> struct date { int month; int day; int year; }; struct empRec{... (14 Replies)
Discussion started by: mlhazan
14 Replies

4. Shell Programming and Scripting

Can somebody solve this please

I have to find the files older than 200 days from a path and copy them to some other directory with the current date stamp attached to it. i have written like follows: #!/bin/ksh DSTAMP=$(date +"%y%m%d%H%M") rm $CA_OUT_PATH/ftp_logs/temp touch $CA_OUT_PATH/ftp_logs/temp chmod 777... (1 Reply)
Discussion started by: sreenusola
1 Replies

5. UNIX for Advanced & Expert Users

Can somebody solve this

I have to find the files older than 200 days from a path and copy them to some other directory with the current date stamp attached to it. i have written like follows: #!/bin/ksh DSTAMP=$(date +"%y%m%d%H%M") rm $CA_OUT_PATH/ftp_logs/temp touch $CA_OUT_PATH/ftp_logs/temp chmod 777... (1 Reply)
Discussion started by: sreenusola
1 Replies

6. UNIX for Dummies Questions & Answers

Can somebody solve this

I have to find the files older than 200 days from a path and copy them to some other directory with the current date stamp attached to it. i have written like follows: #!/bin/ksh DSTAMP=$(date +"%y%m%d%H%M") rm $CA_OUT_PATH/ftp_logs/temp touch $CA_OUT_PATH/ftp_logs/temp chmod 777... (13 Replies)
Discussion started by: sreenusola
13 Replies

7. Programming

any one help me to solve this code??

this is client server socket program. I have to use in C program code. What I have to do. 1. client connect to the server. 2. than client will first prompt a welcome message that asks the user to enter a username using the keyboard. This username will then be sent to the server. 3. than... (1 Reply)
Discussion started by: saiful_911
1 Replies

8. UNIX Desktop Questions & Answers

please help me to solve it

i thought about to use the commands : wc and sort cut and mybe more .. i need to write a bash script that recive a list of varuables kaka pele ronaldo beckham zidane messi rivaldo gerrard platini i need the program to print the longest word of the list. word in the output appears on a... (0 Replies)
Discussion started by: yairpg
0 Replies
sendfile(3EXT)						    Extended Library Functions						    sendfile(3EXT)

NAME
sendfile - send files over sockets or copy files to files SYNOPSIS
cc [ flag... ] file... -lsendfile [ library... ] #include <sys/sendfile.h> ssize_t sendfile(int out_fd, int in_fd, off_t *off, size_t len); DESCRIPTION
The sendfile() function copies data from in_fd to out_fd starting at offset off and of length len bytes. The in_fd argument should be a file descriptor to a regular file opened for reading. See open(2). The out_fd argument should be a file descriptor to a regular file opened for writing or to a connected AF_INET or AF_INET6 socket of SOCK_STREAM type. See socket(3SOCKET). The off argument is a pointer to a vari- able holding the input file pointer position from which the data will be read. After sendfile() has completed, the variable will be set to the offset of the byte following the last byte that was read. The sendfile() function does not modify the current file pointer of in_fd, but does modify the file pointer for out_fd if it is a regular file. The sendfile() function can also be used to send buffers by pointing in_fd to SFV_FD_SELF. RETURN VALUES
Upon successful completion, sendfile() returns the total number of bytes written to out_fd and also updates the offset to point to the byte that follows the last byte read. Otherwise, it returns -1, and errno is set to indicate the error. ERRORS
The sendfile() function will fail if: EAFNOSUPPORT The implementation does not support the specified address family for socket. EAGAIN Mandatory file or record locking is set on either the file descriptor or output file descriptor if it points at regular files. O_NDELAY or O_NONBLOCK is set, and there is a blocking record lock. An attempt has been made to write to a stream that cannot accept data with the O_NDELAY or the O_NONBLOCK flag set. EBADF The out_fd or in_fd argument is either not a valid file descriptor, out_fd is not opened for writing. or in_fd is not opened for reading. EINVAL The offset cannot be represented by the off_t structure, or the length is negative when cast to ssize_t. EIO An I/O error occurred while accessing the file system. ENOTCONN The socket is not connected. EOPNOTSUPP The socket type is not supported. EPIPE The out_fd argument is no longer connected to the peer endpoint. EINTR A signal was caught during the write operation and no data was transferred. USAGE
The sendfile() function has a transitional interface for 64-bit file offsets. See lf64(5). EXAMPLES
Example 1 Sending a Buffer Over a Socket The following example demonstrates how to send the buffer buf over a socket. At the end, it prints the number of bytes transferred over the socket from the buffer. It assumes that addr will be filled up appropriately, depending upon where to send the buffer. int tfd; off_t baddr; struct sockaddr_in sin; char buf[64 * 1024]; in_addr_t addr; size_t len; tfd = socket(AF_INET, SOCK_STREAM, 0); if (tfd == -1) { perror("socket"); exit(1); } sin.sin_family = AF_INET; sin.sin_addr.s_addr = addr; /* Fill in the appropriate address. */ sin.sin_port = htons(2345); if (connect(tfd, (struct sockaddr *)&sin, sizeof(sin))<0) { perror("connect"); exit(1); } baddr = (off_t)buf; len = sizeof(buf); while (len > 0) { ssize_t res; res = sendfile(tfd, SFV_FD_SELF, &baddr, len); if (res == -1) if (errno != EINTR) { perror("sendfile"); exit(1); } else continue; len -= res; } Example 2 Transferring Files to Sockets The following program demonstrates a transfer of files to sockets: int ffd, tfd; off_t off; struct sockaddr_in sin; in_addr_t addr; int len; struct stat stat_buf; ssize_t len; ffd = open("file", O_RDONLY); if (ffd == -1) { perror("open"); exit(1); } tfd = socket(AF_INET, SOCK_STREAM, 0); if (tfd == -1) { perror("socket"); exit(1); } sin.sin_family = AF_INET; sin.sin_addr = addr; /* Fill in the appropriate address. */ sin.sin_port = htons(2345); if (connect(tfd, (struct sockaddr *) &sin, sizeof(sin)) <0) { perror("connect"); exit(1); } if (fstat(ffd, &stat_buf) == -1) { perror("fstat"); exit(1); } len = stat_buf.st_size; while (len > 0) { ssize_t res; res = sendfile(tfd, ffd, &off, len); if (res == -1) if (errno != EINTR) { perror("sendfile"); exit(1); } else continue; len -= res; } ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Evolving | +-----------------------------+-----------------------------+ |MT-Level |MT-Safe | +-----------------------------+-----------------------------+ SEE ALSO
open(2), libsendfile(3LIB), sendfilev(3EXT), socket(3SOCKET), attributes(5), lf64(5) SunOS 5.11 31 May 2006 sendfile(3EXT)
All times are GMT -4. The time now is 07:30 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy