#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. 关于java socket

    1. 关于new Socket()中参数的理解 Server端: 调用ServerSocket serverSocket = new ServerSocket(1287,2);后Server端打开了指 ...

  2. ThinkPHP模板的知识(比较全的知识)

    php框架 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格 ...

  3. debian+nginx配置初探--php环境、反向代理和负载均衡

    配置nginx的PHP环境 安装nginx sudo apt-get install nginx 安装nginx就可以通过下面地址来访问了:http://localhost/ 安装php sudo a ...

  4. mac air 上的Linux命令训练(1)

    1.cat命令 作用: 读取一个文件的全部内容,并将它输出,如果将它输出到一个目标文件,目标文件将会被替换掉. 参数: -n : 加上行号输出 -b:加上行号,但是不加空白行,输出 -s:当遇到多行空 ...

  5. 【NodeJs】记录一个阿里云redis的坑

    背景 一个风和日丽的下午,一个上线的大好日子,以为一切准备好,上个线也就三五分钟的事.但是... 图样图森破. 背景是这样的,项目需要,在阿里云开通redis,在项目中配好redis的连接字符串后,以 ...

  6. 有关html,css,js,less的使用规范

    写前端写久了,规则跟着开发的项目走,突然觉得是不是该总结总结前端的语言使用规则,看到下面这篇还不错,就直接链接过来了哦 http://zhibimo.com/read/Ashu/front-end-s ...

  7. web从入门开始(5)-----表单

    1.   表单的概念 是用来获取客户端用户数据的(信息)的.如:注册表单,查询表单,登录表单等. 2.  表单的工作原理 1.浏览有表单的网页,填写一些必要的信息,然后单击某个按钮,进行提交. 2.这 ...

  8. [ZooKeeper.net] 3 ZooKeeper的分布式锁

    基于ZooKeeper的分布式锁 ZooKeeper 里实现分布式锁的基本逻辑: 1.zookeeper中创建一个根节点(Locks),用于后续各个客户端的锁操作. 2.想要获取锁的client都在L ...

  9. 光环国际的PRINCE2培训时间

    一.光环国际的PRINCE2课程安排培训方式:    小班授课,50人为限;   全国网址直播课程,覆盖各个地区学员    精读原理配合独家开发大量实际案例研讨;    从商业战略角度解析PRINCE ...

  10. Quartz.NET总结(六)了解Jobs 和 Triggers

    前面讲了一些Quartz.net 的一些东西, http://www.cnblogs.com/zhangweizhong/category/771057.html 但是发现有一些基础的东西,没有说到. ...