b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

semaphore go语言实现unix domain socket 客户端/服务端

电脑杂谈  发布时间:2018-02-12 22:43:39  来源:网络整理

java semaphore_semaphore_Linuxsemaphore

semaphoresemaphore

标签:

/*server.go */

package main

import (

"bufio"

"fmt"

"net"

"time"

)

func main() {

var unixAddr *net.UnixAddr

unixAddr, _ = net.ResolveUnixAddr("unix", "/tmp/unix_sock")

unixListener, _ := net.ListenUnix("unix", unixAddr)

defer unixListener.Close()

for {

unixConn, err := unixListener.AcceptUnix()

if err != nil {

continue

}

fmt.Println("A client connected : " + unixConn.RemoteAddr().String())

go unixPipe(unixConn)

}

}

func unixPipe(conn *net.UnixConn) {

ipStr := conn.RemoteAddr().String()

Linuxsemaphore_semaphore_java semaphore

defer func() {

fmt.Println("disconnected :" + ipStr)

conn.Close()

}()

reader := bufio.NewReader(conn)

for {

message, err := reader.ReadString(\n)

if err != nil {

return

}

fmt.Println(string(message))

msg := time.Now().String() + "\n"

b := []byte(msg)

conn.Write(b)

}

}

/* client.go */

package main

import (

"bufio"

"fmt"

"net"

"time"

)

var quitSemaphore chan bool

semaphore_java semaphore_Linuxsemaphore

func main() {

var unixAddr *net.UnixAddr

unixAddr, _ = net.ResolveUnixAddr("unix", "/tmp/unix_sock")

conn, _ := net.DialUnix("unix", nil, unixAddr)

defer conn.Close()

fmt.Println("connected!")

go onMessageRecived(conn)

b := []byte("time\n")

conn.Write(b)

<-quitSemaphore

}

func onMessageRecived(conn *net.UnixConn) {

reader := bufio.NewReader(conn)

for {

msg, err := reader.ReadString(\n)

fmt.Println(msg)

if err != nil {

quitSemaphore <- true

break

}

time.Sleep(time.Second)

b := []byte(msg)

conn.Write(b)

}

}

go语言实现unix domain socket 客户端/服务端


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-74328-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 能登麻美子
        能登麻美子

        过期商品支接罚50000

      热点图片
      拼命载入中...