zoukankan      html  css  js  c++  java
  • 简单的客户端,服务端通信

    client.c代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <errno.h>
    #include <sys/socket.h>
    #include <arpa/inet.h>
    #include <netinet/in.h>
    #include <sys/types.h>
    #include <unistd.h>
    #define BUFLEN 10
    int main(int argc, char **argv)
    {
        int sockfd;
        int port = 4567;
        struct sockaddr_in ser_addr;
        int len;
        char buf[BUFLEN];
         /*建立socket*/
        if ((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1){
            printf("server socket creation error
    ");
            return -1;
        }else 
        printf("server socket success
    "); 
    
        ser_addr.sin_port = htons(port);
        ser_addr.sin_family = AF_INET;
        if (inet_aton(argv[1], (struct in_addr *)&ser_addr.sin_addr.s_addr) == 0) {
           printf("server  error
    ");
            return -1;
            }
         
         /*开始连接服务器*/    
        if(connect(sockfd,(struct sockaddr*)&ser_addr,sizeof(struct sockaddr)) == -1){
            perror("connect");
            exit(errno);
        }else
            printf("conncet success!
    ");
         while(1)
    {
            /******接收消息*******/
            bzero(buf,BUFLEN);
        len = recv(sockfd,buf,BUFLEN,0);
        if(len > 0)
          printf("服务器发来的消息是:%s,共有字节数是: %d
    ",buf,len-1);
         else
           printf("接受消息失败!
    ");
        
        /******发送消息*******/ 
            bzero(buf,BUFLEN);
        printf("请输入发送给对方的消息:");
          /*fgets函数:从流中读取BUFLEN-1个字符*/
            fgets(buf,BUFLEN,stdin);
            len = send(sockfd,buf,strlen(buf),0);
            if(len > 0)
                printf("消息发送成功,本次共发送的字节数是:%d
    ",len);            
            else{
                 printf("聊天终止!
    ");
                    break;  
     }      
        }
        /*关闭连接*/
        close(sockfd);
        return 0;
    }            
      
    View Code

    server.c代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <errno.h>
    #include <sys/socket.h>
    #include <arpa/inet.h>
    #include <netinet/in.h>
    #include <sys/types.h>
    #include <unistd.h>
    #define BUFLEN 10
    int main(int argc,char **argv)
    {
    int ser_sockfd,cli_sockfd;
    int port = 4567;
    int len;   //
    struct sockaddr_in ser_addr;
    struct sockaddr_in cli_addr;
    char buf[BUFLEN];
     /*建立socket*/
    if ((ser_sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1){
        printf("server socket creation error
    ");
            return -1;
    }else
    printf("socket create success!
    ");
     /*设置服务器ip*/
    bzero(&ser_addr,sizeof(ser_addr));
    ser_addr.sin_family = AF_INET;
     /*设置服务器端口*/
    ser_addr.sin_port=htons(port);
    if (argv[1])
            ser_addr.sin_addr.s_addr = inet_addr(argv[1]);
        else
            ser_addr.sin_addr.s_addr = INADDR_ANY;
    
    
    /*把地址和端口帮定到套接字上*/
    if (bind(ser_sockfd,(struct sockaddr*) &ser_addr,sizeof(struct sockaddr_in)) == -1){
     printf("server binding error
    ");
            return -1;
    }else
            printf("bind success!
    ");
    
    /*侦听本地端口*/
    if (listen(ser_sockfd,5) == -1){
     printf("server listening error
    ");
            return -1;
    }else
            printf("the server is listening!
    ");
    
      while(1){
            printf("*****************聊天开始***************
    ");
    if ((cli_sockfd = accept(ser_sockfd,(struct sockaddr*)&cli_addr,&len)) == -1){
    printf("server acception error
    ");
            return -1;
    }else
      printf("正在与您聊天的客户端是:%s: %d
    ",inet_ntoa(cli_addr.sin_addr),ntohs(cli_addr.sin_port));
    
    while(1){
     /******发送消息*******/
                bzero(buf,BUFLEN);
     /*fgets函数:从流中读取BUFLEN-1个字符*/
                fgets(buf,BUFLEN,stdin);
                 len = send(cli_sockfd,buf,strlen(buf),0);
                if(len > 0)
                    printf("消息发送成功,本次共发送的字节数是:%d
    ",len);            
                else{
                    printf("消息发送失败!
    ");
                    break;            
                }
                /******接收消息*******/
                bzero(buf,BUFLEN);
                len = recv(cli_sockfd,buf,BUFLEN,0);
                if(len > 0)
                    printf("客户端发来的信息是:%s,共有字节数是: %d
    ",buf,len);
                else{
                        printf("聊天终止!
    ");
                    break;        
                }
            }
            /*关闭聊天的套接字*/
            close(cli_sockfd);
           
        }
        /*关闭服务器的套接字*/
        close(ser_sockfd);
        return 0;
    }
    View Code
  • 相关阅读:
    创业指南:如何实现打工族的老板梦
    在C#中压缩解压缩文件(适合.Net1.x)
    35岁之前成功的12条黄金法则
    郑州DOTNET俱乐部《DotNet实战之旅》活动邀请
    1baiwan.com你能走多远?(原创,请任意转载,作者:小张.net)
    MongoDB实战开发 【零基础学习,附完整Asp.net示例】
    TFS2010强制撤签锁定项
    持续集成理论和实践的新进展
    JQuery最佳实践
    IE下实现全屏两方法
  • 原文地址:https://www.cnblogs.com/qianboping/p/6400689.html
Copyright © 2011-2022 走看看