关于Golang crypto/tls包的一个疑问

ChanceLau 发布于 2013/12/06 14:54
阅读 1K+
收藏 1
Go

先上代码:

package main

import (
	"crypto/tls"
	"fmt"
	"net"
)

func main() {
	cer, err := tls.LoadX509KeyPair("./server.pem", "./server.key")
	if err != nil {
		fmt.Println(err.Error())
	}
	config := &tls.Config{Certificates: []tls.Certificate{cer}}
	listener, erl := tls.Listen("tcp", ":1111", config)
	if erl != nil {
		fmt.Println(erl.Error())
		return 
	}
	for {
		conn, err := listener.Accept()
		if err == nil {
			go processConn(&conn)
		}
	}
}

func processConn(conn *net.Conn) {
	defer (*conn).Close()
	var buffer [1024]byte
	for {
		n, err := (*conn).Read(buffer[0:1024])
		if err != nil {
			fmt.Println(err.Error())
			return
		}
		s := string(buffer[0:n])
		fmt.Println(s)
		fmt.Println(len(s))
	}
}



学习Go中,写了一个crypto/tls的小例子,可以正常使用。但是在读取数据的时候有一个奇怪的现象。按照代码中的打印情况,用java每隔一段时间给Go发送一个字符串“abcd...xyz”.接收是正常,不过从第二次读取开始,一个字符串会分成两次读取!

Java的部分代码:

while(true){
				Thread.sleep(2000);
				output.write("abcdefghijklmnopqrstuvwxyz".getBytes());
				output.flush();
			}



而得到的打印的结果:

劳烦大神解释解释,感激不尽!

加载中
0
ChanceLau
ChanceLau
大神快出现~~~
0
ChanceLau
ChanceLau
不能沉啊~~~
返回顶部
顶部