socket之multi_server
来源:互联网 发布:tc21弓坯淘宝 编辑:程序博客网 时间:2024/06/05 19:57
#include<stdio.h>#include<string.h> //strlen#include<stdlib.h> //strlen#include<sys/socket.h>#include<arpa/inet.h> //inet_addr#include<unistd.h> //write #include<pthread.h> //for threading , link with lpthread void *connection_handler(void *); int main(int argc , char *argv[]){ int socket_desc , new_socket , c , *new_sock; struct sockaddr_in server , client; char *message; //Create socket socket_desc = socket(AF_INET , SOCK_STREAM , 0); if (socket_desc == -1) { printf("Could not create socket"); } //Prepare the sockaddr_in structure server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; server.sin_port = htons( 8888 ); //Bind if( bind(socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0) { puts("bind failed"); return 1; } puts("bind done"); //Listen listen(socket_desc , 3); //Accept and incoming connection puts("Waiting for incoming connections..."); c = sizeof(struct sockaddr_in); while( (new_socket = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c)) ) { puts("Connection accepted"); //Reply to the client message = "Hello Client , I have received your connection. And now I will assign a handler for you\n"; write(new_socket , message , strlen(message)); pthread_t sniffer_thread; new_sock = malloc(1); *new_sock = new_socket; if( pthread_create( &sniffer_thread , NULL , connection_handler , (void*) new_sock) < 0) { perror("could not create thread"); return 1; } //Now join the thread , so that we dont terminate before the thread //pthread_join( sniffer_thread , NULL); puts("Handler assigned"); } if (new_socket<0) { perror("accept failed"); return 1; } return 0;} /* * This will handle connection for each client * */void *connection_handler(void *socket_desc){ //Get the socket descriptor int sock = *(int*)socket_desc; int read_size; char *message , client_message[2000]; //Send some messages to the client message = "Greetings! I am your connection handler\n"; write(sock , message , strlen(message)); message = "Now type something and i shall repeat what you type \n"; write(sock , message , strlen(message)); //Receive a message from client while( (read_size = recv(sock , client_message , 2000 , 0)) > 0 ) { //Send the message back to client write(sock , client_message , strlen(client_message)); } if(read_size == 0) { puts("Client disconnected"); fflush(stdout); } else if(read_size == -1) { perror("recv failed"); } //Free the socket pointer free(socket_desc); return 0;}
0 0
- socket之multi_server
- socket函数之socket()
- Socket之客户端Socket
- socket系列之什么是socket
- socket 之 socket是神马
- 4.4 single_server.c,multi_server.c,trigger_server.c:业务模块服务模板
- BCB之Socket通信
- Linux编程之socket
- SOCKET之通讯超时
- air之socket
- Socket编程之Select
- BCB之Socket通信
- PHP之Socket编程
- socket之select函数
- SOCKET编程之 INADDR_ANY
- SOCKET编程之INADDR_ANY
- Socket基础之服务端
- Socket基础之客户端
- shell seq 命令测试
- 虚拟机和内存回收
- Java中String类的学习
- BitmapFactory.Options压缩图片
- 【干货收藏】云服务器从选配置、到远程链接、到环境配置的新手入门百问-Windows系统篇
- socket之multi_server
- FCFS 磁盘调度
- Activity的是四种模式
- Kali2.0上Eclipse中使用SVN
- SQL SERVER常用语句
- 利用 org.apache.commons.io.FileUtils快速读写文件
- iOS Git代码管理-对重大更新版本做标定,注tag
- cocos code ide倒入cocos引擎路径时提示不是完整的cocos引擎
- QAbstractItemView为截断的项显示ToolTip(使用事件过滤)