#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. 用PHP ping 一个 IP

    最近要做一个 测试IP列表 是否能连通的功能.大家都知道我们一般用 ping 命令就可以看到IP端口可不可以连通.那在程序里要怎么做呢? 我们在网上找到很多都是使用  exec("ping ...

  2. oracle查看用户所占用的表空间

    select * from (select owner || '.' || tablespace_name name, sum(b) g from (select owner, t.segment_n ...

  3. Java面试10|数据库相关

    1.ID分配单点问题 系统使用一张表的自增来得到订单号,所有的订单生成必须先在这里insert一条数据,得到订单号.分库后,库的数量变多,相应的故障次数变多,但由于单点的存在,故障影响范围并未相应的减 ...

  4. 1622: [Usaco2008 Open]Word Power 名字的能量

    1622: [Usaco2008 Open]Word Power 名字的能量 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 370  Solved: 18 ...

  5. Codevs2776 寻找代表元

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

  6. 1821: [JSOI2010]Group 部落划分 Group

    1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1308  Solved: 627[Su ...

  7. 1599: [Usaco2008 Oct]笨重的石子

    1599: [Usaco2008 Oct]笨重的石子 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 795  Solved: 543[Submit][ ...

  8. .NET Core项目从xproj+project.json向csproj迁移简介

    3月7日,微软发布了Visual Studio 2017 RTM,与之一起发布的还有.NET Core Runtime 1.1.0以及.NET Core SDK 1.0.0,尽管这些并不是最新版,但也 ...

  9. SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener错误

    错误信息:SEVERE: Error configuring application listener of class org.springframework.web.context.Context ...

  10. C中运算符优先级

    总体规则: 特殊运算符>单目运算符>双目运算符>三目运算符>赋值运算符>逗号运算符 只有单目运算符是右结合,其余的均为左结合