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;

    }

  • 相关阅读:
    webpack 3.x loader
    git忽略已经被提交的文件,以及如何恢复追踪
    sessionstorage:本地临时存储
    es6中顶层对象属性≠全局属性
    Android DRM
    FFMPEG中关于ts流的时长估计的实现
    整理mp4协议重点,将协议读薄
    LOCAL_SHARED_LIBRARIES 与 LOCAL_LDLIBS,LOCAL_LDFLAGS的区别
    valgrind调查内存leak
    Android中*_handle_t/ANativeWindowBuffer/ANativeWindow/GraphicBuffer/Surface的关系
  • 原文地址:https://www.cnblogs.com/1932238825qq/p/7384284.html
Copyright © 2011-2022 走看看