#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <arpa/inet.h>
 #include <unistd.h>
 #include <pthread.h>
 #include <errno.h>
 #define DAEMON_PORT                8888
 #define MAX_LISTEN                1024

 ];

 int adminserver();
 void pthread_adminserver(int client_sd);

 int main(int argc, char** argv){
     strcpy(get_manager_ip, argv[]);
     adminserver();
 }
 int adminserver()
 {
     ;
     ;
     ;
     ;
     FILE *fp;
     int res;
     int client_sd;
     int server_sd;
     int reuse_addr;
     pthread_t p_tcpserver;
     int client_addr_size ;

     struct sockaddr_in client_addr;
     struct sockaddr_in server_addr;
     ];
     ];
     ];

     char *pt;
     char *edit;

     sprintf(cmd_ip,"ifconfig %s |grep 'addr:' >/get_manager_ip",get_manager_ip);
     system(cmd_ip);

     fp = fopen("/get_manager_ip","rb");
     if (fp == NULL)
     {
         printf("Cann't open get_manger_ip file!\n");
         exit(-);
     }

     memset(line,,);
     fgets(line,,fp);
     fclose(fp);

     pt=strstr(line, "addr:");
     if (pt != NULL)
     {
         pt+=;
         edit=strtok(pt," ");
         strcpy(listen_ip,edit);
     }

     server_sd=socket( AF_INET, SOCK_STREAM,  );

     )
     {
         printf("ERROR: Cann't create socket!!!\n");
         exit(-);
     }

     bzero(&server_addr, sizeof(struct sockaddr));
     server_addr.sin_family = AF_INET;
     server_addr.sin_addr.s_addr=inet_addr(listen_ip);
     server_addr.sin_port   = htons(DAEMON_PORT);  

     reuse_addr = ;
      )
     {
         printf("setsockopt error\n");
         close(server_sd);
            ;
     }

     res = bind(server_sd, (struct sockaddr *)&server_addr, sizeof(server_addr));
      )
     {
         printf("Cann't bind!res = %d,erro:%d, reason:%s.\n",res, errno, strerror(errno));
         close(server_sd);
         exit(-);
     }  

      ) {
         printf("Cann't listen!\n");
         close(server_sd);
         exit(-);
     }

     )
     {

         client_addr_size = sizeof(client_addr);
         client_sd = accept( server_sd, (struct sockaddr *)&client_addr, (socklen_t *)&client_addr_size);
         )
         {
             printf("Could not create thread check_work_time\n");
             return ;
         }
     }
     close(server_sd);
     exit();
 }

 void pthread_adminserver(int client_sd)
 {
     ;
     int rc;
     ];
      )
         {             //线程处理某个客户端的连接
             memset(buffer,,);
             rc=read(client_sd,buffer,);
             ){
             close(client_sd);  //关闭线程处理的客户端连接
             pthread_exit();//终止该线程
             }
             printf("read date:\"%s\"\n",buffer);

         }
         close(client_sd);  //关闭线程处理的客户端连接
         pthread_exit();//终止该线程
 }

通过线程去处理单条tcp连接,传入网卡名来获取本地所需使用的ip地址,(不同的linux系统需要做点修改,在查询关键字 “addr:”处)

linux c socket 并发 服务端的更多相关文章

  1. linux c socket笔记 -服务端

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types. ...

  2. java socket实现服务端,客户端简单网络通信。Chat

    之前写的实现简单网络通信的代码,有一些严重bug.后面详细写. 根据上次的代码,主要增加了用户注册,登录页面,以及实现了实时显示当前在登录状态的人数.并解决一些上次未发现的bug.(主要功能代码参见之 ...

  3. linux下svn(subversion)服务端添加工程及配置权限

    linux下svn(subversion)服务端添加工程及配置权限 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/9010507.html 此篇我只是将所做过的 ...

  4. linux网络编程学习笔记之三 -----多进程并发服务端

    首先是fork()函数.移步APUE 8.3.  比較清晰的解释能够參考http://blog.csdn.net/lingdxuyan/article/details/4993883和http://w ...

  5. python网络编程:socket、服务端、客户端

    本文内容: socket介绍 TCP: 服务端 客户端 UDP: 服务端 客户端 首发时间:2018-02-08 01:14 修改: 2018-03-20 :重置了布局,增加了UDP 什么是socke ...

  6. Socket客户端/服务端简单实例

    1.client端 package demo.socket; import java.io.BufferedReader;import java.io.IOException;import java. ...

  7. java.net.SocketException:Software caused connection abort: recv failed 异常分析 +socket客户端&服务端代码

    java.net.SocketException:Software caused connection abort: recv failed 异常分析 分类: 很多的技术 2012-01-04 12: ...

  8. 在windows系统上安装VMware Workstation虚拟机,然后在虚拟机VMware Workstation上安装linux系统,在linux系统安装xshell的服务端,在windows系统上安装xshell。用windows系统上的xshell连接到linux

    第一步:安装xshell: 去百度   xshell ,然后安装一下就可以了.就是普通的软件安装,在这里不做过多的接收. 第二步:安装虚拟机VMware Workstation 百度安装,不做过介绍 ...

  9. JAVA Socket获取服务端信息

    1.Socket.getInetAddress(),获取服务端地址. 2.Socket.getPort(),获取服务端端口.

随机推荐

  1. TypeScript设计模式之策略、模板方法

    看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...

  2. Caffe学习系列(一)Ubuntu16.04下搭建编译Caffe环境,并运行MNIST示例(仅CPU)

    前言: 正文: 1.安装必要依赖包: sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev l ...

  3. Pdf File Writer 中文应用(PDF文件编写器C#类库)

    该文由小居工作室(QQ:2482052910)    翻译并提供解答支持,原文地址:Pdf File Writer 中文应用(PDF文件编写器C#类库):http://www.cnblogs.com/ ...

  4. 深入理解 JavaScript 异步系列(4)—— Generator

    第一部分,ES6 中的 Generator 原文地址 http://www.cnblogs.com/wangfupeng1988/p/6532713.html 未经作者允许不得转载~ 在 ES6 出现 ...

  5. Codevs2776 寻找代表元

    2776 寻找代表元 时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold    题目描述 Description 广州二中苏元实验学校一共有n个社团,分别用1到n编号 ...

  6. 基于SSH协议的端口转发

    [前言] 最近一直在使用ssh协议的端口转发(隧道)功能,完成对内网空透等.这篇文章将主要讲解3种常用的ssh tunnelling使用方法和基本原理. 在介绍具体内容前,我先奉上端口转发的常用情景: ...

  7. zTree自动点击第一个节点(转载)

    var setting = { view: { dblClickExpand: true,//双击展开 showLayer: false, selectedMulti: false,//是否允许多选 ...

  8. python 接口自动化测试--框架整改(五)

    代码结构: 目标架构: 1.用例分析器,自动根据接口的参数,类型生成测试用例 2.数据分析器,自动维护接口参数数据,动态数据自动生成,返回结果自动查询判断 3.核心调用引擎,分SOAP和HTTP两种, ...

  9. web从入门开始(6)-----框架

    普通框架 框架概念:就是将一个页面分割成小窗口,每个窗口都是一个网页 框架集和框架页 框架集:<frameset>:主要用来划分窗口的 框架页:<frame>:主要用来指定窗口 ...

  10. java中 "==" 和 ".equels"的区别

    起初接触java的时候这个问题还是比较迷茫的,最近上班之余刷博客的时候看了一些大神写的文章,自己也来总结一下,直接贴代码: package string; public class demo1 { p ...