프로세스 사이의 통신 winsend

admin의 아바타

http://tclsoap.sourceforge.net/winsend.html

프로세스 사이의 통신 패키지중 하나인 winsend 입니다. winsend는 DDE와 같이 Windows 플랫폼만 지원합니다. winsend는 마이크로소프트의 COM 테크놀리지를 사용하며, COM 기술은 프로세스간의 통신을 목표로 하고 합니다.

Tcl로 사용할 수 있는 프로세스 사이의 통신은 아래와 같이 3종류가 있습니다.

http://tclsoap.sourceforge.net/winsend.html

프로세스 사이의 통신 패키지중 하나인 winsend 입니다. winsend는 DDE와 같이 Windows 플랫폼만 지원합니다. winsend는 마이크로소프트의 COM 테크놀리지를 사용하며, COM 기술은 프로세스간의 통신을 목표로 하고 합니다.

Tcl로 사용할 수 있는 프로세스 사이의 통신은 아래와 같이 3종류가 있습니다.

종류 장점/단점
winsend(COM) 인터프리터의 자동등록이 가능
Word나 Excel등의 어플리케이션과 통신가능
Windows 플랫폼만 지원
소켓(Socket) 멀티플랫폼 지원
포트수가 한정
클라이언트에게 포트번호를 알려줘야 사용가능
DDE 인터프리터의 자동 등록이 가능
Word나 Excel등의 어플리케이션과 통신가능
Windows 플랫폼만 지원

winsend는 Tcl8.3이상에서 동작합니다.

예제

아래의 예제는 서버의 이름을 foo로 지정한 예입니다.

# server.tcl
package require winsend

winsend appname foo
vwait var
puts $var

# client.tcl
package require winsend

winsend send foo set var "보이냐?"

아래의 예는 서버의 이름을 지정하지 않은 예이며, 자동등록된 인터프리터 이름을 사용하고 있습니다.

# server.tcl
package require winsend

vwait var
puts $var

# client.tcl
package require winsend

winsend send server.tcl set var "보이냐?"

통신가능한 인터프리터를 얻고 싶을때는, winsend interps 커맨드를 사용하면 됩니다.

다른 어플리케이션과의 통신

Tcl 인터프리터 사이외에 다른 어플리케이션과의 통신도 가능합니다. 다음의 비쥬얼베이직 스크립트는 cscript test.vbs를 사용하여 Tcl인터프리터와 통신하는 예입니다.

Set interp = GetObject("\\.\TclInterp\tkcon.tcl")
interp.Send "puts {Hello from VB Script}"
WScript.Echo interp.Send("info tcl")

마치며

winsend는 COM 지식이 없어도 사용할 수 있습니다. 또한 국제화를 지원하기때문에 한글사용시 아무 문제가 없습니다.