服务器之间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传输单链接和多连接测试结果的主要内容,如果未能解决你的问题,请参考以下文章

网络通信中组播和多播的联系,区别分别是啥?

Socket与Http区别、优缺点及应用场景

什么是接口测试中的接口?

socket读取超时报错

C++ Socket学习记录 -3

javascript WebUploader 分块上传