我有两个小程序通过一个套接字很好地通信,接收端在Go中。当我的信息足够小以适应1024字节的缓冲区,并且可以从连接中读取一次,但是现在我想从100k +或更多的图像传输数据时,一切都很好用。我假设正确的解决方案是不增加缓冲区,直到任何图像可以适应内部。如何通过Go中的套接字检索文件数据?
伪去:
var buf = make([]byte,1024)
conn, err := net.Dial("tcp", ":1234")
for {
r, err := conn.Read(buf[0:])
go readHandler(string(buf[0:r]),conn)
}
我怎样才能提高我的套接字读取程序同时接受简单的几个字节的消息,也更大的数据?如果您可以将总图像数据转换为io.Reader以在image.Decode中使用,则可获得奖励积分。
我如何在连接上读取?是conn.Read一个io.Reader? – Nick
是的,net.Conn实现了io.Reader,因为net.Conn有“Read(b [] byte)(n int,err os.Error)”方法。 – 2011-10-19 07:23:42