net/tcp_echo_server/client

Code

client.odin ¶
49 linesSource

1package main
2
3import "core:fmt"
4import "core:net"
5import "core:os"
6
7tcp_echo_client :: proc(ip: string, port: int) {
8	local_addr, ok := net.parse_ip4_address(ip)
9	if !ok {
10		fmt.println("Failed to parse IP address")
11		return
12	}
13	sock, err := net.dial_tcp_from_address_and_port(local_addr, port)
14	if err != nil {
15		fmt.println("Failed to connect to server")
16		return
17	}
18	buffer: [256]u8
19	for {
20		n, err_read := os.read(os.stdin, buffer[:])
21		if err_read != nil {
22			fmt.println("Failed to read data")
23			break
24		}
25		if n == 0 || (n == 1 && buffer[0] == '\n') {
26			break
27		}
28		data := buffer[:n]
29		bytes_sent, err_send := net.send_tcp(sock, data)
30		if err_send != nil {
31			fmt.println("Failed to send data")
32			break
33		}
34		sent := data[:bytes_sent]
35		fmt.printfln("Client sent [ %d bytes ]: %s", len(sent), sent)
36		bytes_recv, err_recv := net.recv_tcp(sock, buffer[:])
37		if err_recv != nil {
38			fmt.println("Failed to receive data")
39			break
40		}
41		received := buffer[:bytes_recv]
42		fmt.printfln("Client received [ %d bytes ]: %s", len(received), received)
43	}
44	net.close(sock)
45}
46
47main :: proc() {
48	tcp_echo_client("127.0.0.1", 8080)
49}

Declarations Used 9