服务端:
#include<iostream>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<pthread.h>
#include<sys/shm.h>
#define MAXLINE 4096
using namespace std;
int sum=1,connfd[4096];
void *ser(void *p){
char buff[4096];
memset(buff,0,sizeof(buff));
int sum1=sum,n;
sum++;
while((n=recv(connfd[sum1],buff,MAXLINE,0))){
buff[n]='\0';
printf("接收来自客户端 %d 的数据: %s\n",sum1,buff);
}
close(connfd[sum1]);
}
int main(){
int listendfd;
struct sockaddr_in servaddr;
pthread_t tid[4096];
if(( listendfd=socket(AF_INET,SOCK_STREAM,0))==-1) {printf("socket创建失败\n");exit(-1);}
memset(&servaddr,0,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port=htons(6666);
if(bind(listendfd,(struct sockaddr*)&servaddr,sizeof(servaddr))==-1){printf("bind创建失败\n");exit(-1);}
if(listen(listendfd,10)==-1){printf("listen创建失败\n");exit(-1);}
printf("===========等待客户端请求===========\n");
while(1){
if((connfd[sum]=accept(listendfd,(struct sockaddr *)NULL,NULL))==-1) {printf("请求失败\n");}
pthread_create(&tid[sum],NULL,ser,NULL);
sleep(1);
}
close(listendfd);
}
客户端:
#include<iostream>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#define MAXLINE 4096
using namespace std;
int main()
{
int sockfd,n;
char recvline[4096],sendline[4096];
struct sockaddr_in servaddr;
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) {printf("socket创建失败\n");exit(-1);}
memset(&servaddr,0,sizeof(servaddr));
memset(recvline,0,sizeof(recvline));
memset(sendline,0,sizeof(sendline));
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(6666);
if(inet_pton(AF_INET,"192.168.0.103",&servaddr.sin_addr)==-1){printf("inet_pton 错误\n");exit(-1);}
if(connect(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0){printf("连接失败\n");exit(-1);}
printf("====发送数据到服务端=====\n");
while(fgets(sendline,4096,stdin))
{
if(send(sockfd,sendline,strlen(sendline),0)<0){printf("发送数据错误\n");exit(-1);}
}
close(sockfd);
}
多线程 c/s程序
最新推荐文章于 2024-08-13 10:48:54 发布