jjzjj

ssl_client_socket_impl

全部标签

sockets - 通过 TCP 处理多个客户端

好的,我刚开始学习golang,到目前为止我很喜欢它。但是我没有发现他们的文档适合入门者,这是我的问题。我想编写接受连接并向客户端写入内容的小服务器程序。到目前为止没有问题。然而,一旦它获得真正的功能,我就需要能够处理多个客户端,我认为这也是goroutines的一个很好的练习。listener,error:=net.Listen("tcp",remote)con,error:=listener.Accept()gohandleClient(&con);funchandleClient(con*net.Conn){我已经删除了大部分代码。问题是,无论我尝试什么,我都无法通过con。co

sockets - 从正在收听的相同端口调用地址

我正在开发一个P2P应用程序,并希望节点同时充当客户端和服务器。比如我建立了一个监听节点,在goroutine中运行如下代码:ln,_:=net.Listen("tcp",":8080")for{conn,err:=ln.Accept().....}然后,在另一个goroutine中,逻辑确定它必须联系另一个节点以让它知道它的存在,比如在本地主机地址“:8081”上,它也有一个类似的监听循环正在运行。如果我只使用net.Dial("tcp",":8081"),它将选择一个随机端口号进行连接,并且节点位于8081将尝试联系该端口而不是8080上的正确端口。有没有办法从8080发起net.

sockets - 如何发现客户端正在从 go 中的 tcp 缓冲区读取

我开始在一个项目中使用golang相当长的时间。在我的项目中,我必须实现一个响应tcp客户端的tcp服务器。服务器必须向客户端发送大量消息。问题是,当服务器向客户端连接写入消息时,它必须等到客户端从缓冲区读取该消息,然后再发送另一条消息(服务器必须等到客户端调用reader.ReadString('\n')方法)。在我的服务器代码中我写了:for{data:=但服务器将所有消息发送给客户端,而无需等待客户端中的ReadString。如何让服务器等到客户端读取一条消息,然后再发送另一条消息? 最佳答案 我认为要么赋值不明确,要么你误解

validation - Kubernetes client-go 库是否包含用于验证 json/yaml 文件的功能?

我想知道Kubernetes的client-go库是否包含一个函数来验证json/yaml文件。理想情况下,它会捕获错误,例如名称不符合DNS-1123标准或指定的字段无效。如果返回错误列表而不是函数在遇到第一个错误后返回,这也是理想的。我试过的一个想法是执行一个exec来调用kubectl--validate--dry-run但这并不能完全验证list(这意味着它可以通过这里但在你实际执行时失败应用文件)。它也会在第一个错误处停止。另外,如果您要查看list列表,成本会很快变高。我查看的另一个选项在这里KubernetesGitHubIssue193但这并不是真正合适的功能,也不会执

sockets - 如何处理 go 中的粘性 tcp 数据包?

我有一个tcp服务器和一个客户端,服务器执行以下操作funcproviderCallback(connnet.Conn){reader:=bufio.NewReader(conn)varerrerrorfor{lenbyte,_:=reader.Peek(4)reader.Discard(4)slen:=int(binary.BigEndian.Uint32(lenbyte))data,err=reader.Peek(slen)process(data)reader.Discard(slen)}}客户端发送数据包的速度似乎快于进程可以处理的速度,因此我想在bufio中缓冲请求并稍后处理

Golang : Recursive function for reconnecting a TCP client. .. 坏主意?

我有这个有效的TCP客户端代码。当它在TCP连接上写入或读取失败时,它会使用递归函数tcpReconnect()创建一个新连接。这安全吗?它会填满RAM吗?它可能会在几天(周末或节假日)后尝试重新连接。此代码是监视工业机器状态的驱动程序的一部分。也许这个问题有更好的解决方案。我找不到。PS:我不喜欢投票packagemainimport("fmt""net""time")varpollTime=1000//msvarhost="127.0.0.1"varport="11000"funcmain(){finished:=make(chanbool)goDriver()

sockets - 如何在 TLS 监听器中验证对等证书

我正在编写一个TLS监听器并接受新连接。在继续之前,必须根据SHA1列表验证新连接。问题是tls.Listen()返回接口(interface)net.Listener的监听器。这意味着Accept()将产生简单的net.Conn而不是提供ConnectionState()的tls.Conn。PeerCertificates.接受的net.Conn太基础了,但是当我转换为更具体的*tls.Conn类型时,我收到运行时异常。packagemainimport("crypto/tls""fmt""net")typeServicestruct{listenernet.Listener}fun

ssl - 如何在 Go 中的 TLSClient 中使用 http.Get?

您好,我想在创建tlsclient后在GO中执行GET请求,例如:client,err:=docker.NewTLSClient(sconf.DockConf.Endpoint,sconf.DockConf.Cert,sconf.DockConf.Key,sconf.DockConf.Ca)那我如何在GO中执行Get请求呢? 最佳答案 不确定您使用的是什么包,但是http包有一个NewRequest函数req,_:=http.NewRequest("GET",url,nil)client.Do(req)--编辑此外,这里有一个完整的

sockets - 如何用 Go 读取 FFMPEG?

如何读取从ffmpeg发送的UDP?我写了一个脚本来监听UDP数据包并将它们写入文件,但是该文件是无效的并且几乎是两倍大小。这是我发送数据的方式:ffmpeg-ivideo.mp4-c:aaac-ar48000-ab196k\-ac2-strict-2-c:vlibx264-vb500k-r25-s320x240\-ss00.000-fmp4-movflagsfrag_keyframe+empty_moov\udp://127.0.0.1:1936这是Go中的代码。它应该简单地将视频写入一个新的视频文件:packagemainimport("net""os")funcmain(){va

sockets - io.复制: How to know if a socket is closed or disconnected

我有一个简单的程序,它将程序的stdin、stdout和stderr连接到一个套接字,就像这样,gofunc(){deferconn.Close();deferstdin.Close();io.Copy(stdin,conn);}();gofunc(){deferconn.Close();deferstdout.Close();deferstderr.Close();io.Copy(conn,stdout);io.Copy(conn,stderr);}();select{}我有两个问题,我必须通过执行select{}让这两个goroutine保持运行当套接字断开连接时,无法通知它。如果