Win32, Unix-C를 이용한 Socket에 대한 질문
일단 Peudo Code를 보십시요.
---------------------------------------------------------------------
-----
SERVERWin32(Window)
HANDLE hSocket, Socket;
Socket = socket(...);
Sockaddr 구조체 초기화;
bind(Socket...);
listen(Socket, ..);
while(1)
{
hSocket = accept(Socket...);
wsprintf(szCmdLine, \"child.exe %x\", hSocket);
....
BOOLEAN bStatus = CreateProcess(NULL, szCmdLine, NULL,,
NULL, TRUE,
NORMAL_PRIORITY_CLASS,
NULL, NULL, &si,
&pi);
CloseHandle(hSocket);
}
---------------------------------------------------------------------
--------
child.exeWin32(Window)
HANDLE hSocket;
int count = sscanf(argv[1], \"%x\", &hSocket);
주고 받고...
---------------------------------------------------------------------
--------
CLIENTUnix-C(linux)
int sockfd;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
connet(sockfd,...);
주고받고....
---------------------------------------------------------------------
---------
여기서!....
저는 child.exe를 Win32가 아닌 VB를 이용해서 구현하고 싶습니다.
그런데 문제는...SERVER에서 주는 socket HANDLE 즉, hSocket을 어떻게 인
자로 받을
수 있을까 하는 것입니다.
Win32에서는 가능하겠지만 과연 VB에서도 win32 WinMain의 LPSTR
lpszCmdParam처럼
명령형인자를 통하여 Socket Descriptor를 전달받을 방법이 있을까 하는
것입니다.
여기에 대해서 아시는 분이 있다면 대답해 주시면 고맙겠습니다.
(다소 게시판 성격에 않 맞을 수도 있으나 저와 비슷한 고민을 가지고
있는 분이 많으리라 생각되어 글을 올리니 너그러이 봐주셨으면 합니다)
Re: Win32, Unix-C를 이용한 Socket에 대한 질문
인자를 받는부분만 dll로 만들어서 VB랑 인터페이스 하면 되지 않나요?
[자문자답]: Win32, Unix-C를 이용한 Socket에 대한 질문
VB에서 COMMAND라는 걸 이용하면 string 형으로 인자를 넘겨줍니다.
일단, Socket Descriptor를 받을 수 있으므로, winsock 객체에 이것을
Assign하면(지금현재로는 new로 할당시에 초기화하면 될 것 같습니다)
그 다음에는 VB에서의 많은 통신 method들을 주어진 Socket Descriptor
를 통해서 사용할 수 있을 것 같습니다.
---------------------------------------------------------------
수정 이부분이 불가능하더군요. sockethandle이 읽기 전용이라서요.
그래서 일단 받은 Socket Handler를 전역으로 놓아서 공유하고 이것
을 인자로 주는 socket send recv함수를 dll로 win32에서 만들고 이
것을 VB에서 불러주면 되겠네요. ^^;
---------------------------------------------------------------
아직 테스트를 않해본 상태라서 여기에 대해 구체적으로 이야기할수는
없지만 이 방식이면 socket을 VB로 이용할수 있을 것 같군요.
일단은 VB에 Socket Descriptor를 넘겨주는 방법은 알아냈습니다.
댓글 달기