diff --git a/windows-libzmq/README.md b/windows-libzmq/README.md new file mode 100644 index 0000000..8cc9a50 --- /dev/null +++ b/windows-libzmq/README.md @@ -0,0 +1,70 @@ +# msys2 ucrt64 gcc 설치 + +# go 프로젝트 폴더로 복사 +``` +C:\Users\j\+win\vcpkg\packages\zeromq_x64-windows\bin\libzmq-mt-4_3_5.dll +``` + +# server.go +```go +package main + +/* +#cgo CFLAGS: -IC:/Users/j/+win/vcpkg/packages/zeromq_x64-windows/include +#cgo LDFLAGS: -LC:/Users/j/+win/vcpkg/packages/zeromq_x64-windows/lib -lzmq-mt-4_3_5 +#include +*/ +import "C" +import ( + "fmt" + "unsafe" +) +func main() { + context := C.zmq_ctx_new() + defer C.zmq_ctx_term(context) + + socket := C.zmq_socket(context, C.ZMQ_REP) + defer C.zmq_close(socket) + + C.zmq_bind(socket, C.CString("tcp://*:5555")) + + for { + msg := C.zmq_msg_t{} + C.zmq_msg_init(&msg) + defer C.zmq_msg_close(&msg) + + C.zmq_msg_recv(&msg, socket, 0) + size := C.zmq_msg_size(&msg) + data := C.zmq_msg_data(&msg) + + goData := C.GoBytes(data, C.int(size)) + fmt.Printf("Received: %s\n", string(goData)) + + C.zmq_send(socket, unsafe.Pointer(&goData[0]), C.size_t(len(goData)), 0) + } +} +``` + + +# client.py +```py +import zmq +import time + +context = zmq.Context() + +print("Connecting to server...") +socket = context.socket(zmq.REQ) +socket.connect("tcp://localhost:5555") + +for request in range(10): + print(f"Sending request {request} ...") + socket.send(f"Hello {request}".encode()) + + # Get the reply. + message = socket.recv() + print(f"Received reply {request} [ {message.decode()} ]") + + # Wait for a second before next request + time.sleep(1) +``` \ No newline at end of file