write_windows.go 937 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package door
  2. import (
  3. "fmt"
  4. "syscall"
  5. )
  6. func Write(handle syscall.Handle, output string) {
  7. l := len(output)
  8. buffer := []byte(output)
  9. WSA_Buffer := syscall.WSABuf{Len: uint32(l), Buf: &buffer[0]}
  10. UitnZero_1 := uint32(0)
  11. DataWrite := uint32(0)
  12. err := syscall.WSASend(handle, &WSA_Buffer, 1, &DataWrite, UitnZero_1, nil, nil)
  13. if err != nil {
  14. fmt.Printf("write: %d bytes, error: %#v\n", DataWrite, err)
  15. }
  16. }
  17. // Write string to client.
  18. func (d *Door) Write(output string) {
  19. if d.Disconnected {
  20. return
  21. }
  22. handle := syscall.Handle(d.WRITEFD)
  23. l := len(output)
  24. buffer := []byte(output)
  25. WSA_Buffer := syscall.WSABuf{Len: uint32(l), Buf: &buffer[0]}
  26. UitnZero_1 := uint32(0)
  27. DataWrite := uint32(0)
  28. err := syscall.WSASend(handle, &WSA_Buffer, 1, &DataWrite, UitnZero_1, nil, nil)
  29. if err != nil {
  30. fmt.Printf("write: %d bytes, error: %#v\n", DataWrite, err)
  31. d.Disconnected = true
  32. }
  33. }