首页 \ 问答 \ UDP套接字sendto()函数(UDP socket sendto() functions)

UDP套接字sendto()函数(UDP socket sendto() functions)

如果我想像这样在我的udp套接字上写入,我会得到一个错误。 根据文件,应该不会有问题。 我不明白为什么bind()以同样的方式工作,但sendto()失败。

udp_port = 14550
udp_server  = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_server.bind(('127.0.0.1', udp_port))
udp_clients = {}

错误:

udp_server.sendto('', ('192.0.0.1', 14550) )
socket.error: [Errno 22] Invalid argument

I get an error if I want to write on my udp socket like this. According to the docu there shouldn't be a problem. I don't understand why bind() works well in the same way but sendto() fails.

udp_port = 14550
udp_server  = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_server.bind(('127.0.0.1', udp_port))
udp_clients = {}

Error:

udp_server.sendto('', ('192.0.0.1', 14550) )
socket.error: [Errno 22] Invalid argument

原文:https://stackoverflow.com/questions/30268008
更新时间:2021-09-06 20:09

最满意答案

using System.Text; 意味着我正在使用名为“System.Text”的单个命名空间,或者我正在使用“System”命名空间中嵌套的“Text”命名空间?

后者。 您正在使用嵌套在“System”命名空间内的“Text”命名空间。

请注意,当你说

namespace Foo.Bar.Blah
{
    class C 
    {
    ...

这只是一种简短的写作方式

namespace Foo
{
    namespace Bar 
    {
        namespace Blah
        {
            class C 
            {
            ...

命名空间只有“简单”的名字。

我们应该为每个我们使用的命名空间都有一个明确的'using'指令吗?

通常你会,是的。 有些情况下你可能不想这样做。 例如,如果您有两个名称空间都包含一个相同名称的类型,并且您想使用两个名称空间中的类型, 在这种情况下,使用两个名称空间可能会令人困惑。 另外,“使用”带来了扩展方法; 如果有不想绑定的扩展方法,请不要包含包含它们的名称空间。

如果“文本”嵌套在“系统”中,为什么只有“使用系统”包含所有的名称空间?

我不明白这个问题的措辞。 我想也许你在问:

为什么using System; 不是让简单的名字Text解析为嵌套的命名空间?

也就是说,为什么这不起作用:

namespace Foo
{
    namespace Bar
    {
         class Blah {}
    }
}

在另一个文件中:

using Foo;
class Abc : Bar.Blah {}

using Foo; 只包括直接在Foo中声明的类型 。 它没有引入直接在Foo中声明的命名空间 。 C#的设计者认为把命名空间“纳入范围”是太混乱了; 通常人们使用指令将类型 “纳入范围”。


Does using System.Text; mean that I'm using a single namespace named as "System.Text" or that I'm using the "Text" namespace nested inside "System" namespace?

The latter. You are using the "Text" namespace that is nested inside the "System" namespace.

Note that when you say

namespace Foo.Bar.Blah
{
    class C 
    {
    ...

That is just a short form way of writing

namespace Foo
{
    namespace Bar 
    {
        namespace Blah
        {
            class C 
            {
            ...

Namespaces only have "simple" names.

should we have an explicit 'using' directive for every namespace we use?

Typically you do, yes. There are some situations in which you might want to not do so. For example, if you have two namespaces that both contain a type of the same name and you want to use types from both namespaces; in that case it might be too confusing to have a "using" of two namespaces. Also, "using" brings extension methods into play; if there are extension methods that you do not want to bind to, do not include the namespace that contains them.

if "Text" is nested inside "System" why only "using System" includes all the namespaces?

I do not understand the question the way it is worded. I think maybe you are asking:

Why does using System; not make the simple name Text resolve to the nested namespace?

That is, why does this not work:

namespace Foo
{
    namespace Bar
    {
         class Blah {}
    }
}

In a different file:

using Foo;
class Abc : Bar.Blah {}

The using Foo; only includes the types declared directly inside Foo. It does not bring in namespaces declared directly inside Foo. The designers of C# thought that it was too confusing to bring namespaces "into scope" like this; typically people use using directives to bring types "into scope".

相关问答

更多

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)