- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我已经用服务器和客户端完成了一个应用程序,以使用套接字 TCP 发送信息
问题是,如果函数 zfs.ReceiveSnapshot(在服务器端)没有返回错误(err == nil),conn.Write([]byte("0"))
不工作,客户端没有收到任何字节继续,它不能关闭连接...
我给你看服务器端和客户端的代码
服务器:
package main
import (
"net"
"github.com/mistifyio/go-zfs"
)
func main() {
// Listen for incoming connections
l, _ := net.Listen("tcp", ":7766")
// Close the listener when the application closes
defer l.Close()
fmt.Println("Listening on port 7766...")
for {
// Listen for an incoming connection.
conn, _ := l.Accept()
// Handle connections in a new goroutine.
go handleRequest(conn)
}
}
// Handles incoming requests
func handleRequest(conn net.Conn) {
// Receive snapshot
_, err := zfs.ReceiveSnapshot(conn, "tank/replication")
if err != nil {
conn.Write([]byte("1"))
zfs.ReceiveSnapshot(conn, "tank/replication")
conn.Close()
} else {
conn.Write([]byte("0"))
conn.Close()
}
}
客户:
package main
import (
"net"
"github.com/mistifyio/go-zfs"
)
func main() {
conn, _ := net.Dial("tcp", "192.168.99.5:7766")
for i := 0; i < 1; i++ {
// Get all snapshots in tank/test
take, _ := zfs.Snapshots("tank/test")
// Select snapshots
snap := take[0].Name
ds1, _ := zfs.GetDataset(snap)
// Send first snapshot
ds1.SendSnapshot(conn)
defer conn.Close()
buff := make([]byte, 1024)
n, _ := conn.Read(buff)
if n != 0 {
snap = take[1].Name
ds2, _ := zfs.GetDataset(snap)
zfs.SendSnapshotIncremental(conn, ds1, ds2, zfs.IncrementalStream)
conn.Close()
}
}
}
[编辑]:如果 ReceiveSnapshots
返回错误,conn.Write([]byte) 写入“1”,客户端接收它,执行 SendSnapshotIncremental(如果 n != 0 执行)并关闭客户端的连接。 .. 但是,如果 ReceiveSnapshot
没有返回错误,conn.Write([]byte) 不会写“0”,只是我用 ctrl+C 关闭服务器端的连接
最佳答案
我认为问题在于这些行:
buff := make([]byte, 1024)
n, _ := conn.Read(buff)
在这种情况下,n 是读取的字节的数量,而不是其中任何一个的值。
我会:
buff := make([]byte, 1)
n,err := conn.Read(buff)
buff = buff[:n]
if len(buff) == 0 {
//error
}
if(buff[0] != 0){...
关于sockets - conn (net.Conn) 并不总是写在套接字上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44137432/
所以我正在尝试实现类似 Imgur 的功能,非网站成员(member)的用户可以上传并继续编辑该上传内容(直到 cookie 被重置)。 当查看conn结构时,有3个地方出现了用户的cookie。 c
我已经用服务器和客户端完成了一个应用程序,以使用套接字 TCP 发送信息 问题是,如果函数 zfs.ReceiveSnapshot(在服务器端)没有返回错误(err == nil),conn.Writ
经常开发asp但对于细致的说法,真实不太清楚,这里简单的介绍下。 一般情况下 读取数据都是用rs.open sql,conn,1,1 修改数据:rs.open sql,conn,1,3 删除
后 iex -S mix phx.server 我想在 iex 终端做一些快速测试,但有些函数需要 struct %Plug.Conn{} 作为参数,例如我想得到表达式的结果: MyAppWeb.Ro
我正在尝试报告一些代码增强,但是,我不太确定这个项目叫什么。基本上,它不是执行 conn == null,而是执行 null == conn 以提高可读性。 之前: if (conn
这个问题在这里已经有了答案: Is this casting in golang? (1 个回答) What does "i.(string)" actually mean in golang syn
我的代码有点复杂,但简单来说,它有多个 go 例程,所有都调用不同的 TCP 服务器,并在流中出现可读消息时在 for 循环中读取输入。到目前为止,一切都很好。现在有另一个 go 例程来管理之前的一堆
我创建了一个 DBManager 类,如下所示 public class DBManager { public static String DRIVER = "oracle.jdbc.dr
在此处查看 Async/Await 示例: https://github.com/sidorares/node-mysql2/blob/master/documentation/Promise-Wra
在我的一个 Controller 中,我有以下代码(摘录): case HTTPoison.get("https://*****.zendesk.com/api/v2/users/search.jso
conn.execute('some string') 和 SQLAlchemy 中的 conn.execute(text('some string')) 有什么区别? 上面conn是通过conn =
我正在尝试使用btmgmt rust库读取连接的BLE设备的RSSI值,但总是得到127。。我确信该设备已连接,并已解决服务问题,下面是BluToothctl输出:。我尝试使用CLI呼叫btmgmt,
我正在使用MySQL Workbench 。如果我打开一个到 MySQL 的连接(在 Visual Basic 中),它将显示连接已打开。如果我关闭连接(在 MySQL Workbench 中),它会
我在 maven 项目中运行 selenium 测试。这个项目是 GWT Web 应用程序。在 pom.xml 中有 GWT 依赖项,hibernate 依赖项。我在测试包中创建了一个新类来运行 se
我尝试使用 HttpComponentsMessageSender 在 Spring WebServiceTemplate 中设置 ConnectionTimeout 和 ReadTimeout。但是
我刚刚将我的代码从 mysql 更改为 mysqli 并且最好是: 如何避免在每个查询或某些 mysqli 函数中使用 $conn? $conn = mysqli_connect("localhost
执行一条sql查询后,我想访问返回事件的id(主键),以便我可以在另一个sql中使用它。我尝试使用 result.insertId 访问它,但返回的事件对象似乎为 null。我什至控制台记录了 res
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章Asp Conn.execute的参数与返回值总结由作者收集整理,如果你
我正在尝试使用GO与服务进行简单的UNIX套接字通信。为了测试,我创建了一个socket,如下所示: $ nc -vlU /tmp/sock Bound on /tmp/sock Listening
我很难对失败的测试进行故障排除,其中 conn.assigns 都是同一测试语句的一部分,但在测试的两行之间被清空。 我正在阅读“Programming Phoenix”,并重新编写代码以使其与 Ph
我是一名优秀的程序员,十分优秀!