write_windows.go 563 B

12345678910111213141516171819202122232425
  1. package door
  2. import (
  3. "fmt"
  4. "syscall"
  5. )
  6. func Writer(handle syscall.Handle) {
  7. for output := range writerChannel {
  8. l := uint32(len(output))
  9. buffer := []byte(output)
  10. WSA_Buffer := syscall.WSABuf{Len: uint32(l), Buf: &buffer[0]}
  11. UitnZero_1 := uint32(0)
  12. DataWrite := uint32(0)
  13. err := syscall.WSASend(handle, &WSA_Buffer, 1, &DataWrite, UitnZero_1, nil, nil)
  14. if err != nil {
  15. fmt.Printf("write: %d bytes, error: %#v\n", DataWrite, err)
  16. }
  17. if (err != nil) || (l != DataWrite) {
  18. close(writerChannel)
  19. break
  20. }
  21. }
  22. }