본문 바로가기

Progamming/C/C++

(3)
C Server와 Java Client 통신 예제 서버가 C언어로 짜여지고 클라이언트가 java로 짜여진 프로그램 통신 예제 이다. 열심히 구글링을 하였지만 소켓간 접속까지는 되는데 데이터를 주고 받는데 문제를 쉽게 찾지 못하였다. 데이터만 주고 받으면 되는 줄 알았지만, 구글링 결과 C는 리틀엔디안, 자바는 빅엔디안을 사용하는 문제까지 겹친다고 한다. 이 문제는 아직 부딪혀 보지 않았으므로 생략하고, 간단하게 Client(JAVA) Server(C) 데이터 전송 예제를 보겠다. C server 예제 package kisti.server; #include #include #include #include #include #include #include #include #include #include int main(int argc, char* argv[]..
ioctl 과 FIONREAD ioctl 함수는 필수적인 하드웨어 특정 제어(일반적인 입출려과는 반대이다) 를 제공할 수 있다. 그러므로 이 시스템 호출은 장치마다 다르다. 예를 들어 ioctl을 사용하여 테이프 드라이브를 감거나 직렬 포트의 흐름 제어 특성을 설정할 수 있다. 이러한 이유로 ioctl은 플랫폼 별로 이식도리 수 있어야 할 필요가 없다. ioctl은 소켓 통신에서 상대로 부터 날아온 데이터가 소켓 버퍼에 아직 있는지를 검사 할때도 사용이 가능하다. 예를 들어 Client A 에서 패킷 A,B,C,D,E,F 를 순차적으로 전송을 한다. 서버에 B 에서 A,B 까지만 읽고 소켓 통신을 끊거나 프로그램을 종료 하려고 할때 버퍼에 남아있는 패킷양을 확인 할 수 있다. 또는 패킷을 읽어 들이는 while 문 안에서 ioctl ..
유용한 popen 함수 / system 함수 대용 리눅스에서 C로 프로그래밍을 할때, 리눅스 기본 명령어를 C프로그램 안에서 호출해야 할 상황이 간혹가다 생긴다. 나같은경우는 리눅스에 C로만든 서버를 심고, 필요할때 마다, cpu usage나, mem uage, 디스트 쿼터 , 또는 서버들의 상태를 읽어서 클라이언트쪽에다가 전송하길 원한다. 이때, 이미 리눅스에서는 유용한 쉘 명령어 들이 존재하기 때문에 C언어에서 이 명령어들만 호출해주면 된다. 이때 가능한 함수는 system 함수와 popen함수가 있다. system 함수는 명령어를 실행하고 명령 성공 여부에 관한 결과만 가져오지만, popen 함수는 실행 명령어 결과를 스트링으로 가져 올 수 있다. 예를 들어 A 서버에 C언어로 작성된 프로그램을 심었다. 여기서 B,C,D .. n 개의 서버가 살아..