zoukankan      html  css  js  c++  java
  • TCP网络程序设计

    tcp_server.c

    #include<stdio.h>
    #include<sys/socket.h>
    #include<string.h>
    #include<netinet/in.h>
    #define portnum 3333

    int main()
    {
    struct sockaddr_in server_addr;
    struct sockaddr_in client_addr;
    char buffer[128];
    int nbyte;
    int sockfd,new_fd,sin_size;
    //1创建套接字
      if( (sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
    {
    printf("creat socket failed ");
    exit(1);
    }

    //2.1设置地址
    bzero(&server_addr,sizeof(struct sockaddr_in));
    server_addr.sin_family=AF_INET;
    server_addr.sin_port=htos(portnum);
    server_addr.sin_addr.s_addr=htonl(INADDR_ANY);


    //2绑定地址
    bind(sockfd, (struct sockaddr *)(&server_addr),sizeof(struct sockaddr));

    //3监听端口
    listen(sockfd,5);
    while(1)
    {
    //4等待连接
    sin_size=sizeof(struct sockaddr)
    new_fd=accept(sockfd,(struct sockaddr *)(&client_addr), &sin_size);
    printf("server get connection from %s ",inet_ntoa(client_addr.sin_addr));

    //5接收数据
    nbyte=recv(new_fd,buffer,128,0);
    buffer[nbyte]='';
    printf("server received: %s ",buffer);
    //6结束连接
    close(new_fd);
    }
    close(sockfd);
    return 0;
    }

    tcp_client.c

    #include<stdio.h>
    #include<sys/socket.h>
    #include<string.h>
    #include<netinet/in.h>

    #define portnum 3333

    int main()
    {
    char buffer[128];
    struct sockaddr_in server_addr;
    int sockfd;

    //1连接套接字
      if( (sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
    {
    printf("creat socket failed ");
    exit(1);
    }

    //2.1设置要连接的服务器地址
    bzero(&server_addr,sizeof(struct sockaddr_in));
    server_addr.sin_family=AF_INET;
    server_addr.sin_port=htos(portnum);
    server_addr.sin_addr.s_addr=inet_addr("192.168.124.129"); //in_addr_t inet_addr(const char *cp)功能:将字符串形式的IP地址转化为整数型的IP地址(网络字节序)

    //2.2连接服务器
    if( connect(sockfd, (struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)
    {
    printf("connect socket failed ");
    exit(1);
    }


    //3发送数据到服务器
    printf("please input char: ");
    fgets(buffer,128,stdin);
    send(sockfd,buffer,strlen(buffer),0);

    //4关闭连接
    close(sockfd);
    return 0;

    }

  • 相关阅读:
    uni-app中的数值监控方式及函数的封装和引用方式
    uni-app引入阿里矢量图在移动端不显示的问题
    前端登录页点击获取验证码的实现
    app每次更新版本时调用js代码提示用户下载更新
    @Dependson注解与@ConditionalOnBean注解的区别
    navicat for mysql 12中文破解版(安装+破解)--亲测可用
    Kubernetes 常用命令
    MySQL MERGE存储引擎
    MySQL中MyISAM与InnoDB区别
    什么是事务?什么是事务日志以及用途?
  • 原文地址:https://www.cnblogs.com/1932238825qq/p/7384284.html
Copyright © 2011-2022 走看看