我有一个在python中实现的简单UDP服务器:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(("",10005))
while True:
data = sock.recv(1024)
Run Code Online (Sandbox Code Playgroud)
我在计算机A上运行此代码.在这两种情况下,我从计算机B发送UDP命令:
UDP数据包在情况1(LAN电缆)中接收,但在情况2(通过Wifi)中不接收. 在这两种情况下,Wireshark在计算机A上显示收到的数据包.有 什么想法?
操作系统:Windows
客户端程序:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(char,("192.168.1.107",10005))
sock.close()
Run Code Online (Sandbox Code Playgroud)
我已接近找到解决方案.Windows正在丢弃UDP数据包.我用netstat -s -p UDP命令检查了一下.每当发送计算机发送UDP数据包时,接收错误就会增加.现在我只需弄清楚错误地接收数据包的原因.
编辑 我已在其他计算机上测试过它.有用.我已经在计算机上切换了防火墙,但它无法正常工作,但仍然无法弄清楚什么是过滤掉UDP数据包.
我有一个持有指针的类。我在这里只包含了骨架代码。类构造函数需要一个字符串。
#include <iostream>
#include <string>
using namespace std;
class slice {
public:
slice(string s):
data_(s.data()),
size_(s.size()) {}
const string toString() {
string res(data_, data_+size_);
return res;
}
private:
const char* data_;
const size_t size_;
};
int main() {
slice a{"foo"};
slice b{"bar"};
cout << a.toString() << endl;
cout << b.toString() << endl;
}
Run Code Online (Sandbox Code Playgroud)
这个程序的输出是:
$ g++ test.cpp && ./a.out
bar
bar
Run Code Online (Sandbox Code Playgroud)
我期待
foo
bar
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?对象a持有的指针是如何被覆盖的?
我在scala中有以下查询:
val query = for {
(table1, table2) <- Customer leftJoin Transaction on (_.custID === _.custID)
if table1.name === "ABCD"
} yield (table1.name, table2.date)
Run Code Online (Sandbox Code Playgroud)
当我使用query我必须使用query._1或query._2用于name和date分别.是一个使用这种东西的方法:query.name,query.date