我正在寻找一个很好的解决方案,用于使用Go语言的UDP套接字进行客户端/服务器通信.
我在互联网上找到的例子告诉我如何将数据发送到服务器,但他们没有教导如何将它们发送回客户端.
为了演示,我的程序执行以下操作:
我的客户端程序在4444端口上创建一个套接字,如下所示:
con, err := net.Dial("udp", "127.0.0.1:4444")
Run Code Online (Sandbox Code Playgroud)
我发送了一个字符串和本地地址到服务器,因此它可以打印字符串并发送OK消息.我正在使用gob:
enc := gob.NewEncoder(con)
enc.Encode(Data{"test", con.LocalAddr().String()})
Run Code Online (Sandbox Code Playgroud)
我的Data结构如下所示:
type Data struct{
Msg string
Addr string
}
Run Code Online (Sandbox Code Playgroud)
我的服务器侦听4444端口并正确解码Gob,但是如何发送OK消息?我正在使用客户端地址(在服务器.go文件上):
con, err := net.Dial("udp", data.Addr)
Run Code Online (Sandbox Code Playgroud)
然后,我得到一个错误代码:
write udp 127.0.0.1:35290: connection refused
Run Code Online (Sandbox Code Playgroud)
当客户端尝试连接到服务器的端口4444时,客户端会创建一个带有随机数的端口(在本例中为35290),以便它们可以进行通信.我知道我不应该将客户端的地址传递给服务器,但是conn.RemoteAddress()不起作用.发现客户地址的解决方案将是最受欢迎的.
Obs.:我知道有ReadFromUDP,所以我可以阅读包.我应该阅读它,发现客户的地址,并将数据发送到Gob,以便它可以解码吗?
我能够使用JQuery Flot,这是一个非常好的工具.但是,我找不到适合我的问题的好解决方案.
我想复制Y轴,所以我可以在左边显示1,在右边显示1,所以用户在比较图表最右边的数据时,不必滚动到图表的最左边.我假设他们将通过智能手机访问它.
JQuery Flot允许多个轴,但是对于每个轴,我需要一组不同的数据,如下例所示:http: //people.iola.dk/olau/flot/examples/multiple-axes.html
但我不想复制数据.我不能只是'告诉'Flot使用同一组数据复制yaxis吗?

我有一个开始变大的C++项目.我面临的情况是我有很多循环依赖的类.假设我有类A,B,C,D.为了解决这个问题,我创建了一个名为circular_dep.h的头文件
这个文件的内容是指向类的指针:
class A;
class B;
class C;
class D;
Run Code Online (Sandbox Code Playgroud)
这个标题现在包含在我所有类的标题中.这样,当我有循环依赖时,编译器停止抱怨.但是,每当我向项目添加一个新类时,我都必须将它添加到circular_dep.h中
我找不到更简单的方法来做到这一点,所以对我来说这是迄今为止最好的解决方案.我的问题是:适用于可能面临循环依赖问题的项目是否是一个好主意?或者这是一个糟糕的设计/糟糕或危险的做法?
我想像使用Bootstrap一样使用离子构建表格.
我希望我的桌子看起来像这个链接的例子.
因此,我在Ionic的Docs中找不到的功能是"表格标题".我找到的所有示例都不考虑表头.
此外,在Ionic中是否有一种原生方式可以使表格行像Bootstrap的"上下文表格布局"一样着色并具有响应性,如此链接中的 "响应表格布局"示例?
我有一个带有 Dotenv gem 的 Rails 4 应用程序,可以从文件中读取变量.env。
我设置了一些变量,以便为我的 rails 应用程序设置一个除“root”以外的 mysql 用户,例如:
MYSQL_ROOT_USER='rootuser'
MYSQL_ROOT_PASSWORD='rootpassword'
APP_DATABASE_USER='mydbuser'
APP_DATABASE_PASSWORD='userpassword'
Run Code Online (Sandbox Code Playgroud)
我还创建了一个 bash 脚本来在下面创建 mysql 用户 scripts/database_setup.bash
#!/bin/bash
source ../.env
# creates the user
mysql -u${MYSQL_ROOT_USER} --password="${MYSQL_ROOT_PASSWORD}" -e "CREATE USER '${APP_DATABASE_USER}'@'localhost' IDENTIFIED BY '${APP_DATABASE_PASSWORD}';"
# grants permission
mysql -u${MYSQL_ROOT_USER} --password="${MYSQL_ROOT_PASSWORD}" -e "GRANT ALL PRIVILEGES ON \`myapp\_%\`.* TO '${APP_DATABASE_USER}'@'localhost';"
Run Code Online (Sandbox Code Playgroud)
在服务器端,Capistrano 部署到`/home/myuser/apps/myapp/
我有三个问题:
.env文件的最佳位置在哪里?现在我把它放在/home/myuser/apps/myapp/目录中。我习惯了 PHPUnit,所以我发现 RSpec 在显示哪里出错、哪里出错以及为什么出错时表现不佳。
例如,在 PHPUnit 中,我可以在引发异常时获取堆栈跟踪(即使在 RSpec 中使用 -b 选项,我能得到的只是 RSpec 异常的堆栈跟踪,而不是 Rails 的)
此外,当发生某些错误时,它会显示ACTUAL值和EXPECTED值。
我想在 RSpec 中实现的这两个功能。获取包含堆栈跟踪的详细错误消息,以防出现 Ruby 或 Rails 异常,并了解实际值是多少。
关于如何实现这一点的任何想法?
我正在使用Rails 4作为我的Web应用程序,我正在使用VideoJS来显示它,例如:
<video id="video1" class="video-js" controls preload="auto" width="640" height="264" poster="{{pCtrl.video.poster}}" src="<%= @video.file %>">
<source src="<%= @video.file %>" type="video/<%= @video.file.file.filename.last(3) %>">
</video>
Run Code Online (Sandbox Code Playgroud)
我总是从VideoJS收到此错误:
VIDEOJS: ERROR: (CODE:3 MEDIA_ERR_DECODE) The video playback was aborted due to a corruption problem or because the video used features your browser did not support.
Run Code Online (Sandbox Code Playgroud)
当我打开Chrome的开发工具时,我看到视频(340Mb .mp4文件)的下载状态为206(部分内容),仅为2.8 Mb.
我认为这是VideoJS的问题,但后来我尝试直接访问,如" http:// localhost:3000/uploads/video/file/glrbfmso1449450792.mp4 "
该视频将播放几秒钟然后冻结,除非我刷新页面,否则它将无法播放.我认为它只能播放2.8 Mb.所以我认为它与WEBrick有关.
问题不在于视频文件,因为它在VLC上正常播放,当我使用Glassfish(用Java编程)时.
那么我的问题是:我应该在Rails或WEBrick中配置一些东西吗?我应该编辑哪些设置?或者这是我经历的异常?
video ruby-on-rails video-streaming html5-video ruby-on-rails-4
c++ ×1
capistrano3 ×1
flot ×1
go ×1
gob ×1
grid-layout ×1
header-files ×1
html5-video ×1
ionic2 ×1
ionic3 ×1
javascript ×1
jquery ×1
rspec ×1
ruby ×1
sockets ×1
udp ×1
video ×1