|
-
July 27th, 2007, 07:00 AM
#1
c-program on .html file transfering from client to server
Hello friends,
I have a problem on transfering a .html file from client to server.
Earlier I have done two program, one for client and another for server only for message passing in Linux(RED HAT ENTERPRISE LINUX V4).
client program is:
---------------------------------------------------------------------------------------
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
void error(char *msg)
{
perror(msg);
exit(0);
}
int main(int argc, char *argv[])
{
int sockfd, portno, n;
struct sockaddr_in serv_addr;
struct hostent *server;
char buffer[256];
if (argc < 3)
{
fprintf(stderr,"usage %s hostname port\n", argv[0]);
exit(0);
}
portno = atoi(argv[2]);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");
server = gethostbyname(argv[1]);
if (server == NULL)
{
fprintf(stderr,"ERROR, no such host\n");
exit(0);
}
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy((char *)server->h_addr,
(char *)&serv_addr.sin_addr.s_addr,
server->h_length);
serv_addr.sin_port = htons(portno);
if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
error("ERROR connecting");
printf("Please enter the message: ");
bzero(buffer,256);
fgets(buffer,255,stdin);
n = write(sockfd,buffer,strlen(buffer));
if (n < 0)
error("ERROR writing to socket");
bzero(buffer,256);
n = read(sockfd,buffer,255);
if (n < 0)
error("ERROR reading from socket");
printf("%s\n",buffer);
return 0;
}
-----------------------------------------------------------------------------------
server program is:
/* A simple server in the internet domain using TCP
The port number is passed as an argument
This version runs forever, forking off a separate
process for each connection
*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
void dostuff(int); /* function prototype */
void error(char *msg)
{
perror(msg);
exit(1);
}
int main(int argc, char *argv[])
{
int sockfd, newsockfd, portno, clilen, pid;
struct sockaddr_in serv_addr, cli_addr;
if (argc < 2) {
fprintf(stderr,"ERROR, no port provided\n");
exit(1);
}
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");
bzero((char *) &serv_addr, sizeof(serv_addr));
portno = atoi(argv[1]);
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(portno);
if (bind(sockfd, (struct sockaddr *) &serv_addr,
sizeof(serv_addr)) < 0)
error("ERROR on binding");
listen(sockfd,5);
clilen = sizeof(cli_addr);
while (1) {
newsockfd = accept(sockfd,
(struct sockaddr *) &cli_addr, &clilen);
if (newsockfd < 0)
error("ERROR on accept");
pid = fork();
if (pid < 0)
error("ERROR on fork");
if (pid == 0) {
close(sockfd);
dostuff(newsockfd);
exit(0);
}
else close(newsockfd);
} /* end of while */
return 0; /* we never get here */
}
/******** DOSTUFF() *********************
There is a separate instance of this function
for each connection. It handles all communication
once a connnection has been established.
*****************************************/
void dostuff (int sock)
{
int n;
char buffer[256];
bzero(buffer,256);
n = read(sock,buffer,255);
if (n < 0) error("ERROR reading from socket");
printf("Here is the message: %s\n",buffer);
n = write(sock,"I got your message",18);
if (n < 0) error("ERROR writing to socket");
}
---------------------------------------------------------------------------------
Now I want to do two programs,for transferring of .html file from client to server and found difficult because I wrote all the codes for linux and those header files are not supported by VC++ compiler.
Can anyone help me out from this problem?If someone give the apropriate code for those two programs then it will be better.
I will always grateful to him/her.
-
July 27th, 2007, 10:36 AM
#2
Re: c-program on .html file transfering from client to server
In Windows, there is no concept of "forking off a separate process for each connection", which is the architecture you have chosen for the server.
You will need to re-think this architecture. Threading is a possibility.
Mike
-
July 28th, 2007, 01:35 AM
#3
Re: c-program on .html file transfering from client to server
I am new in networking.
Could you explain all the problems if you don't mind?
I have to do this project.
I just want to do in server-client model;there is an .html file in client and server can access that file using C language in windows. I mean both server and client run their individual c-programs and the file is displayed in server screen.Please help..........................!!!!!!!!
-
July 31st, 2007, 10:12 AM
#4
Re: c-program on .html file transfering from client to server
Search the FAQs for "where can I find samples of network programs", or something similar.
-
July 31st, 2007, 10:16 AM
#5
Re: c-program on .html file transfering from client to server
Try Cygwin. Cygwin is a Linux-alike environment for Windows. It provides a Linux compatible layer to Windows API calls. Your application should compile on this platform.
-
July 31st, 2007, 08:10 PM
#6
Re: c-program on .html file transfering from client to server
Yes, but then his users would also need to download and install Cygwin, which is not a straighforward task for typical users.
-
August 3rd, 2007, 10:20 AM
#7
Re: c-program on .html file transfering from client to server
Is there any simple way to solve this problem.I mean Using C language without installing any other s/w.
-
August 3rd, 2007, 10:29 AM
#8
Re: c-program on .html file transfering from client to server
The problem is that the threading model is not part of the C (or C++) language; it's part of the operating system. Thus, each operating system does it differently, and it's difficult to write cross-platform code when threading is involved.
There have been some attempts at cross-platform threading code, like POSIX. You might try that.
Which is all an involved way of saying that there's probably not an easy way around this. Either use your existing code by installing a Cygwin emulator, or re-write the code for Windows.
Mike
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|