博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Centos socket TCP代码
阅读量:6290 次
发布时间:2019-06-22

本文共 2350 字,大约阅读时间需要 7 分钟。

一、功能描述:

  能够在Centos中创建TCP socket,实现Client给Server发送消息,Server能够Client发送消息。

二、代码如下:

  ①client代码:

  #include <stdio.h>

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

  int main()
  {
    int sockfd ;  //socket标示  
    struct sockaddr_in serverAddr;     //socket信息结构体

    serverAddr.sin_family = AF_INET;    //domain

    serverAddr.sin_port = htons(6666);   //server port    
    serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");   //server IP

    if((sockfd=socket(AF_INET,SOCK_STREAM,0))< 0){    //socket()

      printf("socket ERR!\n");
      return -1;
    }
    if( connect(sockfd, (struct sockaddr*)&serverAddr, sizeof(serverAddr))  == -1){    //connect()
      printf("connect error: (errno: )\n");
      return -1;
    }
    if(send(sockfd,"Sending string,logo_fox",strlen("Sending string,logo_fox"),0)<0){    //send()
      printf("send ERR!\n");
      return -1;
    }    close(sockfd);

    return -1;

  }

  ②server代码:

  #include <stdio.h>

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

  int main(int argc ,char ** argv)

  {
    int sockfd, newfd;    //sockfd: socket标示  ,newfd:accept标示
    struct sockaddr_in serveraddr;    //socket信息结构体
    char buf[4096];    //数据缓存区
    int n;      //接收到的信息位数

    serveraddr.sin_family=AF_INET;     //socket domain

    serveraddr.sin_port = htons(6666);    //socket port

    serveraddr.sin_addr.s_addr=htonl(INADDR_ANY);    //socket IP info

    if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0){      //socket()

      printf("Socket ERR!\n");
      return -1;
    }

    if(bind(sockfd,(struct sockaddr *)&serveraddr,sizeof(serveraddr))<0){      //bind()

      printf("Bind ERR!%s(errno:%d)\n",strerror(errno),errno);
      return -1;
    }

    if(listen(sockfd,4)<0){      //listen()

      printf("Listen ERR!\n");
      return -1;
    }

    while(1){

      if((newfd=accept(sockfd,(struct sockaddr *)NULL,NULL))<0){        //accept()
        printf("accept ERR!\n");
        return -1;
      }

      n = recv(newfd,buf,4096,0);      //recv()

      printf("n:%d\n",n);
      buf[n]='\n';          //将接收到的信息变为字符串
      printf("recv msg from client is :%s\n",buf);

      close(newfd);      //关闭accept

    }
    close(sockfd);        //关闭Socket
  }

三、socket通讯流程

转载于:https://www.cnblogs.com/logo-fox/p/4111300.html

你可能感兴趣的文章
bandit系列0--10
查看>>
文本过滤之grep,egreo及fgrep 三剑客及正则表达式
查看>>
实现Singleton模式在C#
查看>>
服务发现:Zookeeper vs etcd vs Consul
查看>>
微软企业项目管理系统技术研讨会
查看>>
Kafka设计篇之消息传输的事务定义
查看>>
我的友情链接
查看>>
使用windows 7 系统安装盘 DOS普通用户提权为管理员
查看>>
老男孩教育每日一题第115天:如何在centos 6下面实现命令补全?效果如下
查看>>
国内可用的yum源
查看>>
linux df -h 命令卡住 解决方法
查看>>
spring是什么,Spring能帮我们做什么
查看>>
Codeforces 861D - Polycarp's phone book
查看>>
FreePortScanner.java
查看>>
HttpURLConnection 文件上传限制
查看>>
javascript类式继承新的尝试
查看>>
真正掌握vuex的使用方法(四)
查看>>
MySql的Communications link failure解决办法
查看>>
GB2312编码
查看>>
架构探险笔记2
查看>>