一个TCP 服务端和客户端程序

来源:互联网 发布:非农数据网 编辑:程序博客网 时间:2024/06/04 20:11
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <stdio.h>
#include <netdb.h>
#include <errno.h>


#define PORT 7777
struct sockaddr_in server;
struct hostent *host;
char buffer[1024];
int main(int argc  ,char *argv[])
{


    if(argc !=2)
    {
         fprintf(stderr,"Usage :%s hostname \a\n",argv[0]);
         exit(1);
}
   if((host = gethostbyname(argv[1])) == NULL)
    {
        fprintf(stderr,"Gethostname erro");
 exit(1);
       }
    int clientfd;
    clientfd = socket(AF_INET, SOCK_STREAM, 0);
    if(0 == clientfd)
    {
        fprintf(stderr,"create socket error %s\n",strerror(errno));
exit(1);
}
       bzero(&server,sizeof(struct sockaddr_in));
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr = *((struct in_addr *)host->h_addr);
 
       if(connect(clientfd,(struct sockaddr *)&server,sizeof(struct sockaddr)) == -1)
       {
         fprintf(stderr,"connect server error %s\n",strerror(errno));
         exit(1);
}
        printf("Please input char: \n");
        fgets(buffer,1024,stdin);
write(clientfd,buffer,strlen(buffer));
printf("buffer is %s\n",buffer);
        close(clientfd);


}

/////////////////////////////////////////////////////////////////

#include <sys/socket.h>
#include <sys/types.h>
#include <stdlib.h>
#include <stdio.h>
#include <netinet/in.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>


#define MAXSIZE 30
#define PORT 7777
#define MAXCONNECT 20


 struct sockaddr_in host;
 struct sockaddr_in client;
int main()
  {
      printf("welcome to my server \n"); 
       int sockServer, new_fb;
int bytes;
char buffer[1024];
int errbind;
sockServer = socket(AF_INET,SOCK_STREAM,0);
if(-1 == sockServer )
         {
            perror("sockServer create failed\n");
            exit(1);
  }
  host.sin_family = AF_INET;
          host.sin_port = htons(PORT);
          host.sin_addr.s_addr = INADDR_ANY;


 errbind = bind(sockServer, (struct sockaddr *)&host, sizeof(struct sockaddr));
 if(-1 == errbind)
 {
            perror("bind erro\n");
    exit(1);
 }
        if(listen(sockServer,MAXCONNECT) == -1)
        {
           perror("listen erro\n");
           exit(1);
        }
        int sin_size = sizeof(struct sockaddr_in);
        printf("##########\n");


        while(1)
        {
              printf("start accpt data\n");
              new_fb = accept(sockServer, (struct sockaddr*)(&client),&sin_size);
              if(-1 == new_fb )
              {
                fprintf(stderr,"accept failed %s\n",strerror(errno));
                       exit(1);
                   
}
             fprintf(stderr,"get data from %s\n",inet_ntoa(client.sin_addr));
int  len = sizeof(client);
             if((bytes = read(new_fb,buffer,1023)) == -1)
              {
                 fprintf(stderr, "read failed %s\n", strerror(errno));
          exit(1); 
      }

             buffer[bytes] = '\0';
printf("recived data is %s \n",buffer);
              close(new_fb);

        }

        close(sockServer);
   }




原创粉丝点击