linux c socket 并发 服务端
#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 并发 服务端的更多相关文章
- linux c socket笔记 -服务端
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types. ...
- java socket实现服务端,客户端简单网络通信。Chat
之前写的实现简单网络通信的代码,有一些严重bug.后面详细写. 根据上次的代码,主要增加了用户注册,登录页面,以及实现了实时显示当前在登录状态的人数.并解决一些上次未发现的bug.(主要功能代码参见之 ...
- linux下svn(subversion)服务端添加工程及配置权限
linux下svn(subversion)服务端添加工程及配置权限 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/9010507.html 此篇我只是将所做过的 ...
- linux网络编程学习笔记之三 -----多进程并发服务端
首先是fork()函数.移步APUE 8.3. 比較清晰的解释能够參考http://blog.csdn.net/lingdxuyan/article/details/4993883和http://w ...
- python网络编程:socket、服务端、客户端
本文内容: socket介绍 TCP: 服务端 客户端 UDP: 服务端 客户端 首发时间:2018-02-08 01:14 修改: 2018-03-20 :重置了布局,增加了UDP 什么是socke ...
- Socket客户端/服务端简单实例
1.client端 package demo.socket; import java.io.BufferedReader;import java.io.IOException;import java. ...
- java.net.SocketException:Software caused connection abort: recv failed 异常分析 +socket客户端&服务端代码
java.net.SocketException:Software caused connection abort: recv failed 异常分析 分类: 很多的技术 2012-01-04 12: ...
- 在windows系统上安装VMware Workstation虚拟机,然后在虚拟机VMware Workstation上安装linux系统,在linux系统安装xshell的服务端,在windows系统上安装xshell。用windows系统上的xshell连接到linux
第一步:安装xshell: 去百度 xshell ,然后安装一下就可以了.就是普通的软件安装,在这里不做过多的接收. 第二步:安装虚拟机VMware Workstation 百度安装,不做过介绍 ...
- JAVA Socket获取服务端信息
1.Socket.getInetAddress(),获取服务端地址. 2.Socket.getPort(),获取服务端端口.
随机推荐
- NDK 开发(Android.mk配置)
在我写这篇文章的时候,Android Studio已经是2.3版本了,已经集成CMake 编译工具, 用户只需在 新建项目的时候,添加选项(Include C++ support),Andr ...
- 深入理解Python中协程的应用机制: 使用纯Python来实现一个操作系统吧!!
本文参考:http://www.dabeaz.com/coroutines/ 作者:David Beazley 缘起: 本人最近在学习python的协程.偶然发现了David Beazley的co ...
- 出现java.lang.reflect.UndeclaredThrowableException异常
解决方案:1.看导进来的项目是否有中文路径.2.看是否有get.set方法没写.3.和部署的环境有关.比如,是否写了构造函数.EJB需要.
- ionic的安装
一.学习一样新的框架的步骤: 1.先找到人家的网站, 一个个点过来看看 2.我们前端的框架,分css与js 3.先学css 再学js 4.要学会复制黏贴代码, 实际演练代码的效果 二.ionic环境安 ...
- 1854: [Scoi2010]游戏
1854: [Scoi2010]游戏 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 2538 Solved: 905[Submit][Status] ...
- 同步 VS 异步
同步请求资源 请求msdn上的一个页面计算页面大小 static void Main(string[] args) { string url = "https://docs.microsof ...
- GreenDao 工具类 --- 使用 Json 快速生成 Bean、表及其结构,"炒鸡"快!
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...
- Android 5.0及以上版本使用webview不能存储第三方Cookies解决方案
Android 5.0以上的手机使用原生WebView浏览网页,在进行登录的时候会提示验证码错误,通过查找5.0以上系统的api文档,发现5.0以上版本的webview做了较大的改动,如:同步cook ...
- (转)shell:读取文件的每一行内容并输出
写法一:----------------------------------------------------------------------------#!/bin/bashwhile rea ...
- 判断是否支持WebP
PC端,触屏版: 前端JS方案——利用img标签加载一张base64的WebP图片,在img标签的onload事件中判断该图片是否具有宽高的属性,若有表示支持webP,若没有表示不支持webP.后台判 ...