Added a socket client, just for test.
This commit is contained in:
parent
153066eb03
commit
d7a1ea0e6b
17
test/Makefile
Normal file
17
test/Makefile
Normal file
@ -0,0 +1,17 @@
|
||||
# Copyright 2009 The Go Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style
|
||||
# license that can be found in the LICENSE file.
|
||||
|
||||
include $(GOROOT)/src/Make.inc
|
||||
|
||||
TARG=client
|
||||
GOFILES=\
|
||||
client.go\
|
||||
|
||||
CLEANFILES+=client
|
||||
|
||||
include $(GOROOT)/src/Make.pkg
|
||||
|
||||
%: install %.go
|
||||
$(GC) $*.go
|
||||
$(LD) -o $@ $*.$O
|
74
test/client.go
Normal file
74
test/client.go
Normal file
@ -0,0 +1,74 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"net"
|
||||
"log"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type Client struct {
|
||||
c * net.TCPConn
|
||||
w chan []byte
|
||||
r chan []byte
|
||||
}
|
||||
|
||||
func NewClient() * Client {
|
||||
client := new(Client)
|
||||
wch := make(chan []byte, 2048)
|
||||
rch := make(chan []byte, 2048)
|
||||
client.w = wch
|
||||
client.r = rch
|
||||
addr, err := net.ResolveTCPAddr("127.0.0.1:4730")
|
||||
if err != nil {
|
||||
log.Panic(err.String())
|
||||
}
|
||||
c, err := net.DialTCP("tcp", nil, addr)
|
||||
client.c = c
|
||||
if err != nil {
|
||||
log.Panic(err.String())
|
||||
}
|
||||
go client.ReadLoop()
|
||||
go client.WriteLoop()
|
||||
return client
|
||||
}
|
||||
|
||||
func (client * Client) ReadLoop() {
|
||||
for {
|
||||
buf := make([]byte, 2048)
|
||||
_, err := client.c.Read(buf)
|
||||
if err != nil {
|
||||
client.c.Close()
|
||||
break;
|
||||
}
|
||||
client.r <- buf
|
||||
}
|
||||
}
|
||||
|
||||
func (client * Client) WriteLoop() {
|
||||
for {
|
||||
select {
|
||||
case buf := <- client.w:
|
||||
client.c.Write(buf)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (client * Client) Write(data []byte) {
|
||||
client.w <- data
|
||||
}
|
||||
|
||||
func (client * Client) Read() []byte{
|
||||
var buf []byte
|
||||
select {
|
||||
case buf = <- client.r:
|
||||
}
|
||||
return buf
|
||||
}
|
||||
|
||||
func main() {
|
||||
client := NewClient()
|
||||
client.Write([]byte("TEST\r\n"))
|
||||
for {
|
||||
fmt.Println(client.Read())
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user