套接字编程中AF_INET和PF_INET有什么区别?
我和在socket()和中使用AF_INET和PF_INET之间的困惑bind().
另外,如何在sin_addr现场提供ip-address ?
我已经阅读了很多关于UDP数据包大小的文章,但是无法得出结论.
许多服务将最大的UDP数据包限制为512字节(如dns)
给定互联网上的最小MTU为576,IPv4标头的大小为20字节,UDP标头为8字节.这留下了548个可用于用户数据的字节
我是否能够使用大小为548的数据包而不会出现数据包碎片?或者是DNS的创建者知道什么,以及为什么他们将其限制为512字节.
我能安全地高于548字节吗?
我想启动一个监听端口的服务器.我可以明确指定端口,它可以工作.但我想以自动方式找到一个端口.在这方面,我有两个问题.
我应该在哪个端口号范围内搜索?(我使用了端口12345,12346和12347,它很好).
如何确定某个端口是否未被其他软件占用?
我正在开始使用套接字编程,我一直在看这个AF_INET.
然而,我从来没有见过任何其他用途.我的讲师不是那么有用,只是说"你只需要它".
所以我的问题:
AF_INET什么?read()和recv()之间的区别,以及socket编程中send()和write()之间的区别是什么?性能和速度等行为.
我知道没有单一的硬性和快速的答案,但是对于SSL的加密开销与未加密的套接字通信,是否存在通用的数量级估计近似值?我只谈论通信处理和线路时间,而不是计算应用级处理.
更新
有一个关于HTTPS与HTTP的问题,但我有兴趣在堆栈中看得更低.
(我更换了那句"的数量级",以避免混淆,我用它作为非正式的术语,而不是在正规CompSci意义当然,如果我.有正式的意思是,作为一个真正的怪胎我就一直在思考的二进制,而不是小数!;-)
更新
根据评论中的每个请求,假设我们讨论的是持久连接上的大小良好的消息(范围为1k-10k).因此,连接建立和数据包开销不是重要问题.
3个问题:
套接字的连接和读取超时有什么区别?
什么连接超时设置为"无限"是什么意思?在什么情况下它可以保持在一个不定式循环中?什么可以触发无限循环死亡?
什么是读超时设置为"无限"是什么意思?在什么情况下它可以保持在一个不定式循环中?什么可以触发无限循环死亡?
在使用mysqld_safe启动mysql server 5.7.17时,会出现以下错误:occcours.
2017-02-10T17:05:44.870970Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.872874Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.874547Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
Run Code Online (Sandbox Code Playgroud)
怎么解决?
鉴于此堆栈跟踪代码段
引起:java.net.SocketException:软件导致连接中止:
java.net.SocketOutputStream.socketWrite0(本机方法)中的套接字写入错误
我试着回答以下问题:
关于#1:
Sun的JVM源代码不包含这个确切的消息,但我认为文本软件导致连接中止:套接字写入错误来自本机实现SocketOutputStream:
private native void socketWrite0(FileDescriptor fd, byte[] b, int off,
int len) throws IOException;
Run Code Online (Sandbox Code Playgroud)
关于#2
我的猜测是,它是在客户端终止连接之前,在获得完整响应之前引起的(例如,发送请求,但在获得完整响应之前,它已关闭/终止/脱机)
问题:
我需要证明这个堆栈跟踪是套接字客户端的"错误",并且服务器没有做任何事情来避免它.(除了捕获异常,或使用非Sun JVM SocketOutputStream,但两者都没有真正避免客户端终止的事实)
我正在构建需要使用套接字连接与另一个应用程序通信的Web应用程序.这对我来说是一个新领域,所以要确保套接字不同于websockets.看起来它们只是在概念上相似.
问起因为我最初计划使用Django作为我的项目的基础,但是在上面链接的SO帖子中,很明显webocket是不可能的(或者至少不可靠,即使像django-websockets这样的东西也是如此)使用首选的Django设置(Apache与mod_wsgi).然而,我发现其他帖子随便导入Python的套接字模块,就像获取服务器的主机名一样简单.
所以: