client and server
时间:2010-06-23 来源:crowsy001
/*client.c*/
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define PORT 3490
#define MAXDATASIZE 20
int main(int argc, char* argv[])
{
int sockfd,numbytes;
char buf[MAXDATASIZE];
struct hostent *he;
struct sockaddr_in ser_addr;
if(argc != 2)
{
fprintf(stderr, "usage:client hostname\n");
exit(1);
}
if((he=gethostbyname(argv[1])) == NULL)
{
herror("gethostbyname");
exit(1);
}
if((sockfd=socket(AF_INET, SOCK_STREAM,0)) == -1)
{
perror("socket");
exit(1);
}
ser_addr.sin_family = AF_INET;
ser_addr.sin_port = htons(PORT);
ser_addr.sin_addr = *((struct in_addr*)he->h_addr);
/* ser_addr.sin_addr.s_addr = inet_addr("192.168.17.101");
*/
if(-1 == (connect(sockfd, (struct sockaddr*)&ser_addr, sizeof(struct sockaddr))))
{
perror("connect ");
exit(1);
}
printf("connect sucess");
if(-1 == (numbytes=recv(sockfd,buf,MAXDATASIZE,0)))
{
perror("recv");
exit(1);
}
buf[numbytes] = '\0';
printf("received: %s\n", buf);
close(sockfd);
return 0;
}
/*server.c*/
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#define MYPORT 3490
#define BACKLOG 10
int main(int argc, char *argv[])
{
int sockfd, new_fd;
struct sockaddr_in my_addr;
struct sockaddr_in client_addr;
int sin_size;
if(-1 == (sockfd=socket(AF_INET, SOCK_STREAM, 0)))
{
perror("socket");
exit(1);
}
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(MYPORT);
/* my_addr.sin_addr.s_addr = inet_addr("192.168.17.101"); */
my_addr.sin_addr.s_addr = INADDR_ANY; /*auto-fill with my IP */
if(-1 == bind(sockfd, (struct sockaddr*)&my_addr, sizeof(struct sockaddr)))
{
perror("bind");
exit(1);
}
if(-1 == listen(sockfd, BACKLOG))
{
perror("listen");
exit(1);
}
while(1)
{
sin_size = sizeof(struct sockaddr_in);
if(-1 == (new_fd=accept(sockfd,(struct sockaddr*)&client_addr, &sin_size)))
{
perror("accept");
continue;
}
if(!fork())
{
if(-1 == send(new_fd, "Hello,workd!\n", 14, 0))
{
perror("send");
}
printf("send Hello, workd!");
close(new_fd);
exit(0);
}
close(new_fd);
while(waitpid(-1,NULL,WNOHANG) >0);
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define PORT 3490
#define MAXDATASIZE 20
int main(int argc, char* argv[])
{
int sockfd,numbytes;
char buf[MAXDATASIZE];
struct hostent *he;
struct sockaddr_in ser_addr;
if(argc != 2)
{
fprintf(stderr, "usage:client hostname\n");
exit(1);
}
if((he=gethostbyname(argv[1])) == NULL)
{
herror("gethostbyname");
exit(1);
}
if((sockfd=socket(AF_INET, SOCK_STREAM,0)) == -1)
{
perror("socket");
exit(1);
}
ser_addr.sin_family = AF_INET;
ser_addr.sin_port = htons(PORT);
ser_addr.sin_addr = *((struct in_addr*)he->h_addr);
/* ser_addr.sin_addr.s_addr = inet_addr("192.168.17.101");
*/
if(-1 == (connect(sockfd, (struct sockaddr*)&ser_addr, sizeof(struct sockaddr))))
{
perror("connect ");
exit(1);
}
printf("connect sucess");
if(-1 == (numbytes=recv(sockfd,buf,MAXDATASIZE,0)))
{
perror("recv");
exit(1);
}
buf[numbytes] = '\0';
printf("received: %s\n", buf);
close(sockfd);
return 0;
}
/*server.c*/
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#define MYPORT 3490
#define BACKLOG 10
int main(int argc, char *argv[])
{
int sockfd, new_fd;
struct sockaddr_in my_addr;
struct sockaddr_in client_addr;
int sin_size;
if(-1 == (sockfd=socket(AF_INET, SOCK_STREAM, 0)))
{
perror("socket");
exit(1);
}
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(MYPORT);
/* my_addr.sin_addr.s_addr = inet_addr("192.168.17.101"); */
my_addr.sin_addr.s_addr = INADDR_ANY; /*auto-fill with my IP */
if(-1 == bind(sockfd, (struct sockaddr*)&my_addr, sizeof(struct sockaddr)))
{
perror("bind");
exit(1);
}
if(-1 == listen(sockfd, BACKLOG))
{
perror("listen");
exit(1);
}
while(1)
{
sin_size = sizeof(struct sockaddr_in);
if(-1 == (new_fd=accept(sockfd,(struct sockaddr*)&client_addr, &sin_size)))
{
perror("accept");
continue;
}
if(!fork())
{
if(-1 == send(new_fd, "Hello,workd!\n", 14, 0))
{
perror("send");
}
printf("send Hello, workd!");
close(new_fd);
exit(0);
}
close(new_fd);
while(waitpid(-1,NULL,WNOHANG) >0);
}
return 0;
}
相关阅读 更多 +
排行榜 更多 +