Я работаю над графическим приложением, пользовательский интерфейс разработан с использованием python (+ kivy), а ядро реализовано с помощью GoLang.Реализация модели Client-Sever с использованием Go и Python в ОС Windows
Мое приложение включает в себя передачу данных из UI в Core, для которых я использую трубы. Ниже приведен фрагмент кода клиента и сервера.
Client.py:
p = win32pipe.CreateNamedPipe(r'\\.\pipe\test_pipe',
win32pipe.PIPE_ACCESS_DUPLEX,
win32pipe.PIPE_TYPE_MESSAGE |win32pipe.PIPE_WAIT,
1, 65536, 65536,300,None)
win32pipe.ConnectNamedPipe(p, None)
data = "Hello Pipe"
win32file.WriteFile(p, bytes(data,"UTF-8"))
Server.go:
ln, err := npipe.Listen(`\\.\pipe\test_pipe`)
if err != nil {
// handle error
}
for {
conn, err := ln.Accept()
if err != nil {
// handle error
continue
}
// handle connection like any other net.Conn
go func(conn net.Conn) {
r := bufio.NewReader(conn)
msg, err := r.ReadString('\n')
if err != nil {
// handle error
return
}
fmt.Println(msg)
}(conn)
}
С выше кусок кода, я не в состоянии установить связь между ними. Мое приложение включает в себя дуплексную связь между клиентом и сервером
Любая помощь приветствуется!
Первое предположение: вы должны «npipe.Dial» на свой именованный канал с go. У вас есть какой-нибудь 'err', который запускает ваш код? – Darigaaz
нет ошибки, «ConnectNamedPipe», похоже, не обнаруживает сервер. Я пробовал один и тот же код с сервером, реализованным в Python, и он отлично работает. – Rjain
afaik 'CreateNamedPipe' создает канал, ожидающий соединений, и' npipe.Listen' создает канал, ожидающий соединений, а также – Darigaaz