diff --git a/_demo/socket/client/client.go b/_demo/socket/client/client.go new file mode 100644 index 00000000..ee1ed884 --- /dev/null +++ b/_demo/socket/client/client.go @@ -0,0 +1,32 @@ +package main + +import ( + "unsafe" + + "github.com/goplus/llgo/c" + "github.com/goplus/llgo/c/os" + "github.com/goplus/llgo/c/socket" +) + +func main() { + sockfd := socket.Socket(socket.AF_INET, socket.SOCK_STREAM, 0) + msg := c.Str("Hello, World!") + defer os.Close(sockfd) + + server := socket.GetHostByName(c.Str("localhost")) + if server == nil { + c.Perror(c.Str("hostname get error")) + return + } + + servAddr := &socket.SockaddrIn{} + servAddr.Family = socket.AF_INET + servAddr.Port = socket.Htons(uint16(1234)) + c.Memcpy(unsafe.Pointer(&servAddr.Addr.Addr), unsafe.Pointer(*server.AddrList), uintptr(server.Length)) + + if res := socket.Connect(sockfd, (*socket.SockAddr)(unsafe.Pointer(servAddr)), c.Uint(16)); res < 0 { + c.Perror(c.Str("connect error")) + return + } + os.Write(sockfd, unsafe.Pointer(msg), c.Strlen(msg)) +}