/*server.c*/
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include<fcntl.h>#include<sys/stat.h>
#define MAXLINE 50typedef struct sockaddr SA;
int main(int argc, char **argv){ int listenfd, connfd; int fd; socklen_t clilen; char buffer[1024]; struct sockaddr_in myaddr, cliaddr; char buf[MAXLINE] = "Welcome to TCP Server"; if ((listenfd = socket(PF_INET, SOCK_STREAM, 0)) < 0){ perror("fail to socket"); exit(-1); } bzero(&myaddr, sizeof(myaddr)); myaddr.sin_family = PF_INET; myaddr.sin_addr.s_addr = htonl(INADDR_ANY); myaddr.sin_port = htons(8889); /* port number */ if (bind(listenfd, (SA *) &myaddr, sizeof(myaddr)) < 0){ perror("fail to bind"); exit(-1); } listen(listenfd, 100); fd=open("/root/gusheng",O_RDWR);
clilen = sizeof(cliaddr); connfd = accept(listenfd, (SA *) &cliaddr, &clilen); printf("connection from %s, port %d/n",inet_ntoa(cliaddr.sin_addr), ntohs(cliaddr.sin_port)); int nbytes; if((nbytes=read(fd,buffer,1024))==-1) { exit(1); } buffer[nbytes]='/0'; printf("Server received %s/n",buffer); /*wtite to socket */ int ret; if (( ret = write(connfd, buffer, nbytes)) < 0) { perror("ERROR writing to socket"); } close(connfd); return 0;}
/*client*/
//tcp_client.c#include<fcntl.h>#include<sys/stat.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>
#define MAXLINE 50typedef struct sockaddr SA;
int main(int argc, char **argv){ int sockfd, nbyte; struct sockaddr_in servaddr, myaddr; char buf[MAXLINE]; if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) < 0){ perror("fail to socket"); exit(-1); } bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = PF_INET; servaddr.sin_addr.s_addr = inet_addr("192.168.1.211"); //server ip; servaddr.sin_port = htons(8889); /* port number */
if (connect(sockfd, (SA *) &servaddr, sizeof(servaddr)) < 0){ perror("fail to connect"); exit (-1); } printf("ddd/n"); int fp2; fp2 = open("/root/gusheng1.txt",O_WRONLY | O_CREAT); int c; c = read(sockfd,buf,MAXLINE); write(fp2,buf,c); close(fp2);
if ( (nbyte = recv(sockfd, buf, MAXLINE, 0)) < 0){ perror("fail to recv"); exit(-1); } //printf("recv from server : %s/n", buf); return 0;}