linux tcp多线程服务器与客户端编程实例
来源:互联网 发布:手机音频编辑软件中文 编辑:程序博客网 时间:2024/05/16 10:41
服务器端:
#include<iostream>#include<arpa/inet.h>#include<sys/socket.h>#include<cstdlib>#include<cstdio>#include<pthread.h>using namespace std;void *run(void *arg);int main(void){int fd=0,res=0;unsigned int port=8888;struct sockaddr_in my_addr;//init sockaddr_in//bzero(my_addr,sizeof(my_addr));my_addr.sin_family=AF_INET;my_addr.sin_port=htons(port);my_addr.sin_addr.s_addr=htonl(INADDR_ANY);//1,create tcp socketfd=socket(AF_INET,SOCK_STREAM,0);if(fd<0){perror("socket");exit(-1);}cout<<"create socket success,fd:"<<fd<<endl;//2,bind sockfd with sockaddrres = bind(fd,(struct sockaddr *)&my_addr,sizeof(my_addr));if(res!=0){perror("bind");close(fd);exit(-1);}cout<<"bind success."<<endl;//3,switch active to unactiveres = listen(fd,10);if(res!=0){perror("bind");close(fd);exit(-1);}cout<<"listen success."<<endl;//4,waiting and accept client connect request...int client_fd=0;unsigned client_port=0;char client_ip[20];pthread_t tid;sockaddr_in client_addr;socklen_t socklen = sizeof(client_addr);cout<<"server listenning at port "<<port<<endl;while(1){client_fd = accept(fd,(struct sockaddr *)&client_addr,&socklen);if(client_fd<0){perror("accept");close(fd);exit(-1);}//get client ip and portinet_ntop(AF_INET,&client_addr.sin_addr.s_addr,client_ip,sizeof(client_ip));client_port = ntohs(client_addr.sin_port);cout<<"client "<<client_ip<<":"<<client_port<<" connected,client fd:"<<client_fd<<endl;//create new thread handle clientpthread_create(&tid,NULL,run,(void *)client_fd);pthread_detach(tid);}close(fd);return 0;}void *run(void *arg)//thread execute function{int client_fd = (int)arg;int len=0;char *buf[512];while(1){len = read(client_fd,buf,sizeof(buf));//read data from clientif(len==0){cout<<"client disconnected."<<endl;close(client_fd);break;}len = write(client_fd,buf,len);//echo to client}return NULL;}
客户端:
#include<iostream>#include<arpa/inet.h>#include<sys/socket.h>#include<cstdlib>#include<cstdio>#include<cstring>using namespace std;int main(void){int fd=0,res=0,len=0;unsigned int server_port = 8888;const char *server_ip = "192.168.1.19";char sendbuf[512]="",getbuf[512]="";struct sockaddr_in server;//init server sockaddrserver.sin_family = AF_INET;server.sin_port = htons(server_port);inet_pton(AF_INET,server_ip,&server.sin_addr.s_addr);//create tcp socketfd = socket(AF_INET,SOCK_STREAM,0);if(fd<0){perror("socket");exit(-1);}cout<<"create socket success,fd:"<<fd<<endl;//connect to server...res = connect(fd,(struct sockaddr *)&server,sizeof(server));if(res!=0){perror("connect");close(fd);exit(-1);}cout<<"connect to server success."<<endl;while(1){cout<<">:";cin.getline(sendbuf,sizeof(sendbuf));send(fd,sendbuf,strlen(sendbuf),0);//send data to serverlen = recv(fd,getbuf,sizeof(getbuf),0);//receive data from servergetbuf[len]='\0';if(len==0){cout<<"server disconnected"<<endl;close(fd);break;}cout<<"recv from server:"<<getbuf<<endl;}return 0;}
0 0
- linux tcp多线程服务器与客户端编程实例
- 【Linux网络编程实例】实例二:利用TCP协议进行客户端与服务器通信
- Linux TCP客户端、服务器编程模型及实例
- socket编程(TCP多线程客户端服务器)
- Linux select TCP并发服务器与客户端编程
- Linux select TCP并发服务器与客户端编程
- linux下多线程tcp服务器、客户端程序
- 多线程编程实例----服务器客户端简单通信
- Linux网络编程 之 TCP 多线程的服务器和客户端同时收发数据
- Linux系统编程(32)—— socket编程之TCP服务器与客户端
- Linux系统编程(34)—— socket编程之TCP服务器与客户端的交互
- linux下多线程控制服务器与客户端
- TCP 服务器与客户端
- tcp服务器与客户端
- Java多线程TCP客户端与服务器间使用Socket通信
- linux 网络编程:客户端与服务器通过TCP协议相互通信 + UDP
- linux 网络编程:客户端与服务器通过TCP协议相互通信
- linux 网络编程:客户端与服务器通过TCP协议相互通信
- 查看表结构 -- MySQL Desc指令相关
- JBPM视频下载链接
- Hibernate报表查询
- iOS TableView didSelectRowAtIndexPath选中某Cell后获取其Cell实例对象
- Python的包管理工具easy_install, setuptools, pip,distribute介绍
- linux tcp多线程服务器与客户端编程实例
- ExpandableListView及其子项显示上下文菜单
- 关于_load_gdtr
- poj.3259
- 《黑马程序员》 交通灯管理系统案例分析与总结
- cocos2d-x 2.2版本下实现随机姓名产生
- Linux系统上安装MySQL 5.5prm
- js金额格式化
- After Adding a Product Redirect to Shopping Cart doesnot work