日期:2014-05-16 浏览次数:20657 次
/* * * client * * */ #include<stdio.h> #include<stdlib.h> #include<errno.h> #include<string.h> #include<netdb.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #define SERVPORT 1234 #define MAXDATASIZE 100 int main(int argc, char *argv[]) { int sockfd, sendBytes; char buf[MAXDATASIZE]; struct hostent *host; struct sockaddr_in servAddr; if(argc != 2) { fprintf(stderr,"usage:./client [hostname]"); exit(1); } /*translate the address*/ if((host = gethostbyname(argv[1])) == NULL) { perror("fail to get host by name"); exit(1); } printf("Success to get host by name...\n"); /*establish a socket*/ if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("fail to establish a socket"); exit(1); } printf("Success to establish a socket...\n"); /*init sockaddr_in*/ servAddr.sin_family = AF_INET; servAddr.sin_port = SERVPORT; servAddr.sin_addr = *((struct in_addr *)host -> h_addr); bzero(&(servAddr.sin_zero), 8); /*connect the socket*/ if(connect(sockfd, (struct sockaddr *)&servAddr, sizeof(struct sockaddr)) == -1) { perror("fail to connect the socket"); exit(1); } printf("Success to connect the socket...\b"); /*send datas to server*/ if(sendBytes = send(sockfd, "hello", 5, 0) == -1) { perror("fail to send datas"); exit(1); } printf("Success to send data!"); close(sockfd); }
/* * * server * * */ #include<stdio.h> #include<stdlib.h> #include<errno.h> #include<string.h> #include<netdb.h> #include<unistd.h> #include<sys/types.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #define SERVPORT 1234 #define BACKLOG 20 #define MAX_CON_NO 10 #define MAX_DATA_SIZE 5 int main() { struct sockaddr_in serverSockaddr, clientSockaddr; int sinSize, recvBytes; int sockfd, clientfd; char buf[MAX_DATA_SIZE]; /*establish a socket*/ if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("fail to establish a socket"); exit(1); } printf("Success to establish a socket...(sockfd = %d)\n", sockfd); /*init sockaddr_in*/ serverSockaddr.sin_family = AF_INET; serverSockaddr.sin_port = htons(SERVPORT); serverSockaddr.sin_addr.s_addr = INADDR_ANY; bzero(&(serverSockaddr.sin_zero), 8); /*bind socket*/ if(bind(sockfd, (struct sockaddr *)&serverSockaddr, sizeof(struct sockaddr))== -1) { perror("fail to bind"); exit(1); } printf("Success to bind the socket...\n"); /*listen on the socket*/ if(listen(sockfd, BACKLOG) == -1) { perror("fail to listen"); exit(1); } printf("Success to listen on the socket...\n"); /*accept a client's request*/ if((clientfd = accept(sockfd, (struct sockaddr *)&clientSockaddr, &sinSize)) == -1) { perror("fail to acceot"); exit(1); } printf("Success to accpet...\n"); /*call recv to receive datas*/ if((recvBytes = recv(sockfd, buf, MAX_DA