Attached server.c and client.c. Compile with "gcc server.c -o server"
and same for client. Run "server" followed by "client 127.0.0.1"
The part where you establish a connection between a client and server
seems to be pretty easy. No error checking is done in this code of
course, it's just to demonstrate it.
The next bit of code I'd like to test out would be the client sending a
command to the server which the server will execute. That shouldn't be
hard I don't think.
--
Gerard Beekmans
/* If Linux doesn't have the solution, you have the wrong problem */
#include <stdio.h>
#include <netinet/in.h>
int
main (int argc, char **argv)
{
#define MAXLINE 4096
#define SA struct sockaddr
int sockfd, n;
char recvline [MAXLINE+1];
struct sockaddr_in servaddr;
if (argc != 2) {
printf("usage: %s IPaddress\n", argv[0]);
exit(1);
}
sockfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(1234);
inet_pton(AF_INET, argv[1], &servaddr.sin_addr);
connect(sockfd, (SA *) &servaddr, sizeof(servaddr));
while ( (n = read(sockfd, recvline, MAXLINE)) > 0) {
recvline[n] = 0;
if (fputs(recvline, stdout) == EOF)
printf("fputs error\n");
}
if (n < 0)
printf("read error\n");
exit(0);
}
#include <stdio.h>
#include <netinet/in.h>
int
main (int argc, char **argv)
{
#define MAXLINE 4096
#define LISTENQ 5
#define SA struct sockaddr
int listenfd, connfd;
struct sockaddr_in servaddr;
char buff[MAXLINE];
listenfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(1234);
bind(listenfd, (SA *) &servaddr, sizeof(servaddr));
listen(listenfd, LISTENQ);
for ( ; ; ) {
connfd = accept(listenfd, (SA *) NULL, NULL);
snprintf(buff, sizeof(buff), "This is a test\r\n");
write(connfd, buff, strlen(buff));
close(connfd);
}
}
--
http://linuxfromscratch.org/mailman/listinfo/alfs-discuss
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page