본문 바로가기
코스웨어/10년 시스템제어

시스템제어 4월12일 14번 선동환 보고서

by 알 수 없는 사용자 2010. 4. 12.
728x90
반응형

네트워크
서버에서 접속한 클라이언트1,2에 데이터 보내기
SOCKET client_sock[2];
int client_num = 0;
 
if(client_num = 0)
    {
      retval1 = send(client_sock[client_num],buf,strlen(buf),0);  //내가 작성한 정보를 접속자에게 보낸다
              //보낼 장소 (client_sock[client_num])
              //보낼 데이터(buf)
              //보낼 데이터 크기 (strlen(buf))
    }
    else if(client_num = 1)
    {
      retval1 = send(client_sock[0],buf,strlen(buf),0); 
      retval2 = send(client_sock[client_num],buf,strlen(buf),0); 
    }
우선 client_sock client_num 전역 변수 만들어 준다
그후 데이터를 보내는 부분인 send 가서 client_sock 부분을 클라이언트 1 들어 갔을때 보낼곳과
클라이언트 2가 들어 갔을대 보낼 곳으로 만들기 위해  client_sock[client_num]으 부분으로 변경하여
두개의 클라이언트로 데이터를 보낼수 있게 만든다(client_num는 각 클라이언트를 나타낸다)
비동기 수정 소스
//---------------넌 블록킹 소켓으로 전환--------
 u_long on =1;
 retval = ioctlsocket(listen_sock,FIONBIO,&on);
 if(retval==SOCKET_ERROR)
 {
  printf("소켓 속성 변경 실패\n");
  return 0;
 }
 //---------------------------------------------- 
ATmega128(c과제)
2. 1바이트 범위의 정수를 입력 받은 다음, 각각의 비트가 켜져 있으면 1, 꺼져 있으면 0을 출력하세요
#include <stdio.h> 
 
int main() 
  int inum,sum,cnt;
  printf("N1의 값 : ");
  scanf("%d",&inum);
 
  for(sum=0;sum<8;sum++)
  {
    cnt=(inum>>sum)&1;
    printf("결과 %d=%d\n",sum,cnt);
  }
  return 0;
}
12 = 0000 1100                                                                    and연산
0000 1100>>0  =>  0000 1100 & 1 == 0                                 0 & 0 = 0
0000 1100>>1  =>  0000 0110 & 1 == 0                                 0 & 1 = 0
0000 1100>>2  =>  0000 0011 & 1 == 1                                 1 & 0 = 0
0000 1100>>3  =>  0000 0001 & 1 == 1                                 1 & 1 = 1
0000 1100>>4  =>  0000 0000 & 1 == 0
0000 1100>>5  =>  0000 0000 & 1 == 0
0000 1100>>6  =>  0000 0000 & 1 == 0
0000 1100>>7  =>  0000 0000 & 1 == 0
5. 1바이트는 8개의 비트로 이루어집니다. 255는 8개 비트 전체가 1인 경우이고, 1은 최하위 1비트만 1인 경우입니다
문자 ch의 켜진 비트 개수는 몇 개입니까? 켜진 비트는 1로 설정된 비트의 다른 표현입니다
#include <stdio.h> 
 
int main() 
  int sum,cnt,op=0;
  char cnum;
  printf("N1의 값 : ");
  scanf("%c",&cnum);
 
  for(sum=0;sum<8;sum++)
  {
    cnt=(cnum>>sum)&1;
    if(cnt == 1)
    {
      op++;
    }        
  }
  printf("문자 %c\n",cnum);
  printf("비트 %d\n",op);
  printf("값 %d\n",cnum);
  return 0;
}
728x90