服务器之间socket传输单链接和多连接测试结果
Posted 安子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务器之间socket传输单链接和多连接测试结果相关的知识,希望对你有一定的参考价值。
今天做了一下测试,目的是看看局域网内服务器a,通过一个连接往服务器b传输数据,和通过多个连接传输的不同。
结果发现和多少个连接没关系,一个进程一个连接就能跑满网卡,只要write的时候够快,read的时候够快就可以。1000m网卡,tcp能跑到910m
下面是golang写的程序:
server:
package main
import (
"fmt"
"net"
"os"
)
func main() {
l, err := net.Listen("tcp", os.Args[1])
if err != nil {
fmt.Println("Error listening:", err.Error())
os.Exit(1)
}
defer l.Close()
fmt.Println("Listening on :" + os.Args[1])
for {
conn, err := l.Accept()
if err != nil {
fmt.Println("Error accepting: ", err.Error())
os.Exit(1)
}
go handleRequest(conn)
}
}
func handleRequest(conn net.Conn) {
buf := make([]byte,209715200 )
for {
_, err := conn.Read(buf)
if err != nil {
fmt.Println(err)
return
}
}
}
client:
package main
import "net"
import "os"
import "log"
import "strconv"
func main() {
conn, err := net.Dial("tcp", os.Args[1])
i64, err1 := strconv.ParseInt(os.Args[2], 10, 32)
if err!=nil {
log.Println(err)
}
if err1!=nil{
log.Println(err1)
}
//200M=209715200
var array = make([]byte,i64)
for {
conn.Write(array[:])
}
}
以上是关于服务器之间socket传输单链接和多连接测试结果的主要内容,如果未能解决你的问题,请参考以下文章