linux 下tcp连接 c++ 线程处理
来源:互联网 发布:中国工业软件 编辑:程序博客网 时间:2024/06/06 17:54
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<server>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// 添加头文件
#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 sockaddr 绑定res = 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){// 相当于recvlen = read(client_fd,buf,sizeof(buf));//read data from clientif(len==0){cout<<"client disconnected."<<endl;close(client_fd);break;}//相当于sendlen = 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 = "127.0.0.1";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连接 c++ 线程处理
- linux下TCP连接
- Linux下的TCP连接
- linux下c线程
- Linux 下 TCP C代码
- Linux下基于TCP的线程通信
- Linux 下TCP连接关闭情况分析
- Linux下通过iptables抓取tcp连接
- Linux 下TCP连接关闭情况分析
- Linux 下TCP连接关闭情况分析
- linux下查看TCP网络连接情况
- linux下TCP连接占用的资源
- Linux下的C语言Socket函数建立TCP连接(代码+注释)
- linux下C连接mysql
- linux下C连接mysql
- linux下c连接mysql
- Linux下 MySQL sock连接和TCP连接
- TCP连接超时处理
- 一维数组、数组排序、字符数组
- js判断undefined类型
- 负载均衡之LVS TUN模式(IP隧道)
- Andrew Ng机器学习笔记(五)——生成学习算法和朴素贝叶斯算法
- POJ 1050/ ZOJ 1074:To the Max - DP求子矩阵和
- linux 下tcp连接 c++ 线程处理
- novell
- JPA2.0总结
- jsp <%@include%>和<jsp:inclued />的区别
- 二十一、标准库类型string的使用、string类介绍、string对象的构造和初始化、string常用成员函数
- Python:sys模块
- opencv学习笔记-加载图像(释疑:非mat类与mat类、头文件引用)
- NSString 为什么使用copy,而不是retain?
- godot中的场景实例化上