本文整理汇总了Golang中github.com/kildevaeld/projects/Godeps/_workspace/src/github.com/gdamore/mangos.Socket类的典型用法代码示例。如果您正苦于以下问题:Golang Socket类的具体用法?Golang Socket怎么用?Golang Socket使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Socket类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: recvName
func recvName(sock mangos.Socket, name string) {
var msg []byte
var err error
if msg, err = sock.Recv(); err == nil {
fmt.Printf("%s: RECEIVED: \"%s\"\n", name, string(msg))
}
}
示例2: replyLoop
func replyLoop(sock mangos.Socket) {
if sendData == nil {
fatalf("No data to send!")
}
for {
msg, err := sock.RecvMsg()
switch err {
case mangos.ErrRecvTimeout:
return
case nil:
default:
fatalf("RecvMsg failed: %v", err)
}
printMsg(msg)
msg.Free()
msg = mangos.NewMessage(len(sendData))
msg.Body = append(msg.Body, sendData...)
err = sock.SendMsg(msg)
if err != nil {
fatalf("SendMsg failed: %v", err)
}
}
}
示例3: NewListener
func (t *inprocTran) NewListener(addr string, sock mangos.Socket) (mangos.PipeListener, error) {
if _, err := mangos.StripScheme(t, addr); err != nil {
return nil, err
}
l := &listener{addr: addr, proto: sock.GetProtocol()}
return l, nil
}
示例4: sendRecv
func sendRecv(sock mangos.Socket, name string) {
for {
sock.SetOption(mangos.OptionRecvDeadline, 100*time.Millisecond)
recvName(sock, name)
time.Sleep(time.Second)
sendName(sock, name)
}
}
示例5: client
func client(url string, name string) {
var sock mangos.Socket
var err error
var msg []byte
if sock, err = sub.NewSocket(); err != nil {
die("can't get new sub socket: %s", err.Error())
}
sock.AddTransport(ipc.NewTransport())
sock.AddTransport(tcp.NewTransport())
if err = sock.Dial(url); err != nil {
die("can't dial on sub socket: %s", err.Error())
}
// Empty byte array effectively subscribes to everything
err = sock.SetOption(mangos.OptionSubscribe, []byte(""))
if err != nil {
die("cannot subscribe: %s", err.Error())
}
for {
if msg, err = sock.Recv(); err != nil {
die("Cannot recv: %s", err.Error())
}
fmt.Printf("CLIENT(%s): RECEIVED %s\n", name, string(msg))
}
}
示例6: client
func client(url string, name string) {
var sock mangos.Socket
var err error
var msg []byte
if sock, err = respondent.NewSocket(); err != nil {
die("can't get new respondent socket: %s", err.Error())
}
sock.AddTransport(ipc.NewTransport())
sock.AddTransport(tcp.NewTransport())
if err = sock.Dial(url); err != nil {
die("can't dial on respondent socket: %s", err.Error())
}
for {
if msg, err = sock.Recv(); err != nil {
die("Cannot recv: %s", err.Error())
}
fmt.Printf("CLIENT(%s): RECEIVED \"%s\" SURVEY REQUEST\n",
name, string(msg))
d := date()
fmt.Printf("CLIENT(%s): SENDING DATE SURVEY RESPONSE\n", name)
if err = sock.Send([]byte(d)); err != nil {
die("Cannot send: %s", err.Error())
}
}
}
示例7: node0
func node0(url string) {
var sock mangos.Socket
var err error
var msg []byte
if sock, err = rep.NewSocket(); err != nil {
die("can't get new rep socket: %s", err)
}
sock.AddTransport(ipc.NewTransport())
sock.AddTransport(tcp.NewTransport())
if err = sock.Listen(url); err != nil {
die("can't listen on rep socket: %s", err.Error())
}
for {
// Could also use sock.RecvMsg to get header
msg, err = sock.Recv()
if string(msg) == "DATE" { // no need to terminate
fmt.Println("NODE0: RECEIVED DATE REQUEST")
d := date()
fmt.Printf("NODE0: SENDING DATE %s\n", d)
err = sock.Send([]byte(d))
if err != nil {
die("can't send reply: %s", err.Error())
}
}
}
}
示例8: NewListener
func (t wsTran) NewListener(addr string, sock mangos.Socket) (mangos.PipeListener, error) {
proto := sock.GetProtocol()
l, e := t.listener(addr, proto)
if e == nil {
if v, e := sock.GetOption(mangos.OptionMaxRecvSize); e == nil {
l.maxrx = v.(int)
}
l.mux.Handle(l.url.Path, l)
}
return l, e
}
示例9: node0
func node0(url string) {
var sock mangos.Socket
var err error
if sock, err = pair.NewSocket(); err != nil {
die("can't get new pair socket: %s", err)
}
sock.AddTransport(ipc.NewTransport())
sock.AddTransport(tcp.NewTransport())
if err = sock.Listen(url); err != nil {
die("can't listen on pair socket: %s", err.Error())
}
sendRecv(sock, "node0")
}
示例10: NewDialer
func (wsTran) NewDialer(addr string, sock mangos.Socket) (mangos.PipeDialer, error) {
iswss := strings.HasPrefix(addr, "wss://")
opts := make(map[string]interface{})
opts[mangos.OptionNoDelay] = true
opts[mangos.OptionKeepAlive] = true
proto := sock.GetProtocol()
maxrx := 0
if v, e := sock.GetOption(mangos.OptionMaxRecvSize); e == nil {
maxrx = v.(int)
}
return &dialer{addr: addr, proto: proto, iswss: iswss, opts: opts, maxrx: maxrx}, nil
}
示例11: recvLoop
func recvLoop(sock mangos.Socket) {
for {
msg, err := sock.RecvMsg()
switch err {
case mangos.ErrProtoState:
return
case mangos.ErrRecvTimeout:
return
case nil:
default:
fatalf("RecvMsg failed: %v", err)
}
printMsg(msg)
msg.Free()
}
}
示例12: simpleSend
func simpleSend(t *testing.T, tx mangos.Socket, wg *sync.WaitGroup) {
var buf [256]byte
i := 0
for i = 0; i < 10000; i++ {
l := rand.Intn(255) + 1
buf[0] = uint8(l)
if e := tx.Send(buf[:l]); e != nil {
t.Fatalf("Send: %v", e)
break
}
}
t.Logf("Sent %d Msgs", i)
if e := tx.Close(); e != nil {
t.Fatalf("Tx Close: %v", e)
}
wg.Done()
}
示例13: server
func server(url string, nworkers int) {
var sock mangos.Socket
var err error
var wg sync.WaitGroup
rand.Seed(time.Now().UnixNano())
if sock, err = rep.NewSocket(); err != nil {
die("can't get new rep socket: %s", err)
}
if err = sock.SetOption(mangos.OptionRaw, true); err != nil {
die("can't set raw mode: %s", err)
}
sock.AddTransport(ipc.NewTransport())
sock.AddTransport(tcp.NewTransport())
if err = sock.Listen(url); err != nil {
die("can't listen on rep socket: %s", err.Error())
}
wg.Add(nworkers)
fmt.Printf("Starting %d workers\n", nworkers)
for id := 0; id < nworkers; id++ {
go func(id int) {
defer wg.Done()
serverWorker(sock, id)
}(id)
}
wg.Wait()
}
示例14: sendLoop
func sendLoop(sock mangos.Socket) {
if sendData == nil {
fatalf("No data to send!")
}
for {
msg := mangos.NewMessage(len(sendData))
msg.Body = append(msg.Body, sendData...)
err := sock.SendMsg(msg)
if err != nil {
fatalf("SendMsg failed: %v", err)
}
if sendInterval >= 0 {
time.Sleep(time.Duration(sendInterval) * time.Second)
} else {
break
}
}
}
示例15: node1
func node1(url string, msg string) {
var sock mangos.Socket
var err error
if sock, err = push.NewSocket(); err != nil {
die("can't get new push socket: %s", err.Error())
}
sock.AddTransport(ipc.NewTransport())
sock.AddTransport(tcp.NewTransport())
if err = sock.Dial(url); err != nil {
die("can't dial on push socket: %s", err.Error())
}
fmt.Printf("NODE1: SENDING \"%s\"\n", msg)
if err = sock.Send([]byte(msg)); err != nil {
die("can't send message on push socket: %s", err.Error())
}
sock.Close()
}