一、功能描述:

  能够在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通讯流程

Centos socket TCP代码的更多相关文章

  1. 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载

    一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.N ...

  2. 分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载

    一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已经完成,在通常的情况下,开发人中都是在使用者B所使用 ...

  3. 基于.NET Socket Tcp的发布-订阅框架

    基于.NET Socket Tcp的发布-订阅框架 一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已 ...

  4. 初步探究java中程序退出、GC垃圾回收时,socket tcp连接的行为

    初步探究java中程序退出.GC垃圾回收时,socket tcp连接的行为 今天在项目开发中需要用到socket tcp连接相关(作为tcp客户端),在思考中发觉需要理清socket主动.被动关闭时发 ...

  5. socket tcp缓冲区大小的默认值、最大值

    Author:阿冬哥 Created:2013-4-17 Blog:http://blog.csdn.net/c359719435/ Copyright 2013 阿冬哥 http://blog.cs ...

  6. 使用Beetle简单构建高性能Socket tcp应用

    beetle是基于c#编写的高性能Socket tcp组件,它基于SocketAsyncEventArgs的实现并提供了发送队列和接收队列的支持,可以根据情况灵活地设置1-N个发送队列和接收队列.除了 ...

  7. 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截

    程序猿修仙之路--数据结构之你是否真的懂数组?   数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构  .要想在之后的江湖历练中通关,数据结构必不可少. ...

  8. 通用异步 Windows Socket TCP 客户端组件的设计与实现

    编写 Windows Socket TCP 客户端其实并不困难,Windows 提供了6种 I/O 通信模型供大家选择.但本座看过很多客户端程序都把 Socket 通信和业务逻辑混在一起,剪不断理还乱 ...

  9. 基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现

    设计概述 服务端通信组件的设计是一项非常严谨的工作,其中性能.伸缩性和稳定性是必须考虑的硬性质量指标,若要把组件设计为通用组件提供给多种已知或未知的上层应用使用,则设计的难度更会大大增加,通用性.可用 ...

随机推荐

  1. HDU 3605 Escape (网络流,最大流,位运算压缩)

    HDU 3605 Escape (网络流,最大流,位运算压缩) Description 2012 If this is the end of the world how to do? I do not ...

  2. qbxt的题:找一个三元环

    有向图中找一个三元环 题意: 考虑 N 个人玩一个游戏, 任意两个人之间进行一场游戏 (共 N*(N-1)/2 场),且每场一定能分出胜负.现在,你需要在其中找到三个人构成的这样的局面:A战胜B,B战 ...

  3. 运行vb写的程序,有些电脑上会弹出一个与office相关的窗口

    到网上搜索了一下,找了几个解决方案,不过我的电脑上没出现过,所以先收藏一下,或许以后能用上. 来自:http://bbs.csdn.net/topics/380204412 今天将注册表的项一个个删除 ...

  4. poj 3276(反转)

    传送门:Problem 3276 参考资料: [1]:挑战程序设计竞赛 先献上AC代码,题解晚上再补 题意: John有N头牛,这些牛有的头朝前("F"),有的朝后("B ...

  5. mysql 日志清理

    1.查看binlog日志 show binary logs; 2.删除某个日志文件之前的所有日志文件purge binary logs to 'bin.000106'; 3.再看show binary ...

  6. jQuery中json中关于带有html代码网页的处理

    昨天在使用jQuery的get方式请求返回json格式数据.然后使用jQuery自带的parseJSON 处理.总是出现这样的错误. 如果返回数据中content改成普通的数据可以通过.找了半天错误, ...

  7. 在子类中调用父类的方法super

    1.没有super之前,在子类里面需要父类里面的逻辑,但是我们是通过派生(自己定义了一个init,增加了一条line) class vehichle:#定义一个交通工具的类 Country=" ...

  8. HMTL列表详解

    1.无序列表<ul> ul其实没啥好说的,大家用得最多就是它,它的属性无非就是type: disc circle square 2.有序列表<ol> H4的时候就有2个属性,t ...

  9. Python Machine Learning-Chapter3

    Chapter 3:A Tour of Machine Learning Classifiers Using Scikit-learn 3.1:Training a perceptron via sc ...

  10. Scala进阶之路-Spark独立模式(Standalone)集群部署

    Scala进阶之路-Spark独立模式(Standalone)集群部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们知道Hadoop解决了大数据的存储和计算,存储使用HDFS ...