서버 select 모델
2181 단어 서버selectLinux 시스템 프로그래밍
다음은 서버의 실현 (서버가 클라이언트가 보낸 데이터를 모두 대문자로 변환)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int main(int argc, char const *argv[])
{
//
int listen_fd=socket(AF_INET,SOCK_STREAM,0);
if(-1==listen_fd)
{
perror("socket");
return ;
}
//
struct sockaddr_in seraddr;
memset(&seraddr,0,sizeof(seraddr));
seraddr.sin_family=AF_INET;
seraddr.sin_port=htons(1234);
seraddr.sin_addr.s_addr=inet_addr("192.168.1.30");
//
if(bind(listen_fd,(struct sockaddr*)&seraddr,sizeof(seraddr))==-1)
{
perror("bind");
return ;
}
//
if(listen(listen_fd,10)==-1)
{
perror("listen");
return ;
}
int maxfd=listen_fd;
fd_set readset;
struct timeval ts;
ts.tv_sec=1;
int clifd[128];
int i,index=0;
for(i=0;i<128;i++)
{
clifd[i]=-1;
}
while(1)
{
FD_ZERO(&readset);//
FD_SET(listen_fd,&readset);// listen_fd
for(i=0;i0)
{
//
if(FD_ISSET(listen_fd,&readset))
{
struct sockaddr_in cliaddr;
memset(&cliaddr,0,sizeof(cliaddr));
int cli_size=sizeof(cliaddr);
int fd=accept(listen_fd,(struct sockaddr*)&cliaddr,&cli_size);
if(-1==fd)
{
perror("accept");
return ;
}
clifd[index]=fd;
if(clifd[index]>maxfd)
{
maxfd=clifd[index];
}
index++;
printf("index:%d
",index);
}
for(i=0;i='a' && buf[j]<='z')
{
buf[j] -= 0x20;
}
j++;
}
write(clifd[i],buf,strlen(buf));
}
}
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
집 서버 설계 (하드웨어 편)자신의 Redmine이나 ownCloud를 운용하기 위해 사쿠라 VPS, DigitalOcean, OpenShift 등을 놀랐습니다만, 침착 해 왔으므로 현상을 정리하고 싶습니다. 먼저 하드웨어 구성을 정리합니다. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.