클라이언트 프로그램의 호환성 문제에 관한 질문입니다.

kimyh의 이미지

클라이언트에서 1분 마다 작업을 해서 작업처리결과가 이전(1분전)에 처리한 작업결과와 같으면 서버에 작업결과를 보내지 않고 작업결과가 다를경우에만 소켓을 열어 작업결과를 전송해주는 아주 간단한 프로그램입니다.

서버(리눅스 레드햇 9)측과 클라이언트(리눅스 레드햇 9)용 프로그램은 C로 작성해서 gcc 버젼 3.2.2로 컴파일해서 잘 동작되고 있습니다.

또한 윈도우 클라이언트는 VC++ 6.0 MFC로 작성하고 컴파일한후 윈도우 XP에서 잘 동작하는것을 확인 했습니다.

그런데 사용 가능한 클라이언트를
리눅스 계열로는 리눅스, 솔라리스(INTEL), 솔라리스(SPARC), FreeBSD 그리고
윈도우 계열로는 윈도우 98, 윈도우 2000, 윈도우 xp 정도로 하고 싶은데 사실 모든 테스트 베드가 갖춰진것이 아니어서 호환성 여부 테스트가 사실 난감합니다.

제가 궁금한것은 클라이언트 기종에 따라 프로그램의 어느부분이 호환성에 관련 되는지 또는 이럴경우 모든 개발환경을 다 갖춰놓고 개발을 해야 하는건지 무척 궁금 하군요.
소프트 웨어 개발전문 업체도 아니고 집에서 개발하고 있어 모든 개발환경을 갖춘다는건 꿈도 꿀수 없기에 말입니다.

경험 있으신분 도움좀 주시면 고맙겠습니다.
GCC 3.2.2 버젼으로 개발하면 다른 리눅스(슬랙웨어나 데비안), 솔라리스나, FreeBSD등과 호환이 어느정도 가능 한지요.
그리고 윈도우 계열에서 VC++ 6.0 MFC로 개발하면 호환성이 어느정도 까지 가능한지 알고 싶군요.

아래는 헤더파일에 참조된 파일목록 입니다.
리눅스용 C
	#include <signal.h>
	#include <stdio.h>
	#include <string.h>
	#include <sys/time.h>
	#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
	#include <sys/ioctl.h>
	#include <net/if.h>
	#include <linux/sockios.h>
	#include <arpa/inet.h>
#include <dirent.h>
 
윈도우 VC++ 6.0 MFC
#include "stdafx.h"
#include "String.h"
#include "winsock.h"
#pragma comment(lib, "ws2_32.lib")

ez8의 이미지

저도 초보이고 경험이 별로 없지만 Linux 에서 작성한 것은 FreeBSD 에서 대부분

잘 돌아갔습니다. Linux emulation 도 되는지라 큰 문제는 없어보입니다.

문제가 되었던 것은 Linux 에서 select 함수가 timeout 을 변경시킨다는 것 말고는

특별히 기억나는 것이 없습니다. 이건 UNP 에서도 나왔던 이야기이고, FreeBSD 에서

작성한 것이 Linux 에서 문제가 되는 경우라 상관없을 듯 싶고, 헤더화일 중 linux/sockios.h 는

FreeBSD 에서는 sys/sockio.h 로 해주셔야 빌드가 될 것으로 보입니다. autotools 로

configure 시 검사를 해주거나 define 메크로 테스트로 처리해주셔야 될 것 같습니다.

kimyh의 이미지

답변 감사합니다.
많은 도움이 될것 같군요.
아무래도 참조하는 헤더파일과 사용하는 함수에따라 호환성이 결정될것 같다는 생각이 드는군요.
프로그램 배포전에 호환성 관련 공부를 많이 해야 할것 같군요.
다시한번 좋은 답변에 감사드립니다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.