lesson6 基于多线程的tcp并发服务器
来源:互联网 发布:嵌入式linux终端 编辑:程序博客网 时间:2024/05/20 01:37
1. 每条新连接的client都会抛出一个新线程处理事件
/*DATA:2015-4-20 *AUTHOR:WJ *DESCRIPTION:多线程TCP服务器 *1、int socket(int domain, int type, int protocol); *2、int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); *3、int listen(int sockfd, int backlog); *4、int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); *5、read、write */ #include "apue.h"#define MAX_LISTEN 10char buf[100];int ad[10];struct sockaddr_in server_ip, remote_ip;void *thread_fun(void *arg){while(1){printf("read data from client ; %s\n", inet_ntoa(remote_ip.sin_addr.s_addr));read(ad[(int)arg], buf, 100);printf("buf is %s\n", buf);}return NULL;}int main(){int server_len, remote_len;pthread_t tid[10];int err, sd;int i=0;sd = socket(AF_INET, SOCK_STREAM, 0);if(sd == -1){printf("create socket failed, errno is %d\n", errno);return;}server_ip.sin_family = AF_INET;server_ip.sin_port = htons(5678);server_ip.sin_addr.s_addr = htonl(INADDR_ANY);memset(server_ip.sin_zero, 0, 8);err = bind(sd, (struct sockaddr *)(&server_ip), sizeof(struct sockaddr));if(err == -1){printf("bind error, errno is %d\n", errno);close(sd);return;}err = listen(sd, MAX_LISTEN);if(err == -1){printf("listen error , errno is %d\n", errno);close(sd);return;}remote_len = sizeof(struct sockaddr);while(1){ad[i] = accept(sd, (struct sockaddr *)(&remote_ip), &remote_len);if(ad[i] == -1){printf("accept error, errno is %d \n", errno);close(sd);return;}err = pthread_create(&tid[i], NULL, thread_fun, (void *)i);if(err != 0){printf("create new thread failed\n");close(ad[i]);}i++;}close(sd);return 0;}
0 0
- lesson6 基于多线程的tcp并发服务器
- tcp多线程并发服务器
- 基于 TCP 协议的并发服务器程序
- 基于select函数的单进程并发服务器程序----TCP
- 基于TCP协议用多线程实现并发服务器,实现思路、算法和demo
- 基于TCP协议用多线程实现并发服务器,实现思路、算法和demo
- Linux网络编程 基于tcp的多线程的服务器
- TCP并发服务器实例--多线程
- TCP多线程并发服务器+线程池+echo
- 基于tcp服务器的多线程版-java-简单
- 基于tcp的小型服务器(多线程多进程)
- 基于TCP的多进程和多线程服务器
- 基于socket的Tcp多进程多线程服务器
- TCP并发服务器的简易程序
- Linux TCP 服务器编程(六):基于线程的并发服务器
- 基于tcp/udp socket多线程并发实现对二进制协议的压力测试
- linux下搭建能同时接收UDP和TCP连接的socket并发多线程服务器
- 基于TCP的简单服务器
- 看Kubernetes 1.5之后如何称霸容器编排管理界
- [Tarjan算法]最近公共祖先(LCA)问题求解
- apk反编译
- 详述 Java 语言中的大数值
- system、runtime
- lesson6 基于多线程的tcp并发服务器
- Redis的安装和部署
- 当深度学习遇到K8s
- 微信公众号开发模板消息推送(二) 获取openid java
- centos中软件的安装
- windows socket 网络编程
- Python入门(一):单行字符串,多行字符串和Unicode字符串
- 菱形虚拟继承和多态的原理
- PAT-B 1009. 说反话 (20)