小编use*_*466的帖子

Python套接字可通过LAN工作,但不能通过Wifi工作

我有一个在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命令:

  1. A和B都通过LAN电缆连接到本地网络中的路由器.
  2. A和B都通过Wifi连接到路由器.

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数据包.

python windows udp

5
推荐指数
1
解决办法
1082
查看次数

为什么在此处重写字符串文字(C++)?

我有一个持有指针的类。我在这里只包含了骨架代码。类构造函数需要一个字符串。

#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持有的指针是如何被覆盖的?

c++

4
推荐指数
1
解决办法
83
查看次数

有没有办法避免在scala slick查询中使用._1?

我在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._1query._2用于namedate分别.是一个使用这种东西的方法:query.name,query.date

scala slick-2.0

0
推荐指数
1
解决办法
135
查看次数

标签 统计

c++ ×1

python ×1

scala ×1

slick-2.0 ×1

udp ×1

windows ×1