Add windows-libzmq/README.md
This commit is contained in:
70
windows-libzmq/README.md
Normal file
70
windows-libzmq/README.md
Normal file
@@ -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 <zmq.h>
|
||||
*/
|
||||
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)
|
||||
```
|
||||
Reference in New Issue
Block a user