服务端
当有客户端连接服务端后,客户端发送小写字母,服务端转换为大写字母后发送给客户端
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<string.h>
#include<pthread.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#define IP "127.0.0.1"
#define PORT 7777
int cfd;
void* do_work(void* arg){
int i = (int)arg;
printf("第%d个子线程连接\n",i);
char buf[BUFSIZ];
int len;
int j;
while(1){
len = read(cfd,buf,sizeof(buf));
if(len == 0){
printf("客户端已经关闭\n");
break;
}
for(j = 0; j < len; j++){
buf[j] = toupper(buf[j]);
}
write(cfd,buf,len);
}
return ;
}
int main(){
int sfd = socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in serv_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(PORT);
inet_pton(AF_INET,IP,&serv_addr.sin_addr.s_addr);
socklen_t serv_len = sizeof(serv_addr);
int ret = bind(sfd,(struct sockaddr*)&serv_addr,serv_len);
if(ret == -1){
perror("bind eror");
exit(1);
}
ret = listen(sfd,128);
if(ret != 0){
perror("listen error");
printf("listen error:%s\n",strerror(ret));
exit(2);
}
struct sockaddr_in clie_addr;
socklen_t clie_len = sizeof(clie_addr);
int i = 0;
pthread_t tid[128];
char buf[BUFSIZ];
while(1){
cfd = accept(sfd,(struct sockaddr *)&clie_addr,&clie_len);
printf("%s连接,端口为:%d\n",inet_ntop(AF_INET,&clie_addr.sin_addr.s_addr,buf,sizeof(buf)),ntohs(clie_addr.sin_port));
ret = pthread_create(&tid[i],NULL,do_work,(void*)i);
if(ret != 0){
printf("pthread_create error:%s\n",strerror(ret));
exit(3);
}
pthread_detach(tid[i]);
i++;
}
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)