草庐IT

c - 哪种是实现 TCP/UDP 服务器的最佳方式?在线程或进程中处理每个传入请求

您好,我正在实现TCP服务器。请求是函数的名称。我需要执行运行服务器的某个库中存在的函数。库函数可能会导致段错误或浮点异常。我打算在一个单独的进程中实现函数调用操作。所以任何崩溃都会导致子进程死亡。我的问题是在进程中执行这样的操作还是使用线程更好?还有人请告诉我如何在崩溃时重新启动我的服务器应用程序。我写了restart.conf并保存在/etc/init/下,但它仅在系统重新启动时才重新启动,而不是在应用程序崩溃时重新启动。我不想在do-while中做这件事 最佳答案 大约25年前,当决定如何在Web服务器中实现CGI脚本时,提出

C#实现TCP和UDP通信

文章目录UDP发送UDP接收TCP发送TCP接收C#在命名空间System.Net.Sockets中对伯克利套接字提供了良好的封装,提供了完善的TCP和UDP通信功能。从编程的角度出发,TCP和UDP最大的区别是,TCP存在TcpClient和TcpLinster两个对象用于信息的传递,二者一发一收,十分完备。而UDP则只有一个类UdpClient,换言之,UDP通信是不分服务端和客户端,通信双方对等。UDP发送至少在形式上,UDP比TCP更简单,所以先从UDP讲起。考虑到通信那肯定是有发有收才行,如果只用C#自己,那么肯定得上个多线程什么的才能跑通。为了避免问题复杂化,故推荐使用这款NetA

networking - 在 UDP 的情况下,MTU 重传如何工作

众所周知,UDP不支持重传和其他一些东西。我们也知道像MTU这样的东西基本上以下列方式工作——当源点和目标点之间的路径上的网络设备之一不支持某种大小的数据包时,它就会丢弃它。对于TCP,这不是问题——它已经知道握手后的MSS总是小于MTU(我说的对吗?),因此不可能发送大小大于MTU的数据包。但是,我想知道在UDP情况下它是如何工作的?正如我已经说过的,此协议(protocol)中没有重传,也没有MSS这样的东西。那么当数据包因超过MTU而被丢弃时会发生什么?或者它只是因为MTU性质才起作用(它实际上属于IP层,而不是像UDP或TCP这样的传输层协议(protocol))?所以IP层以

tcp - 如何通过 tcpip/udp 发送/接收 nmea 字符串

我有一个gps接收器,它可以将数据(使用gprs连接)发送到服务器www.example.com。现在我需要一些东西来从www.example.com接收这些数据(gpsnmea字符串)(可能是为了监听某个端口......),解析这些信息并将其存储到我的数据库中。我对php和mysql有一定的了解。所以,问题是——是否可以用php和mysql来完成?如果是的话,你能指出我应该从哪里开始吗?如果没有,你能给我一些其他的建议吗?非常感谢! 最佳答案 前面的www表示http。这意味着您必须运行自己的网络服务器。但是您可能需要调查一下您的

sockets - 如何通过 RAW 套接字使用 TCP 校验和卸载

(使用Linux)使用原始套接字创建TCP数据包-事实证明,计算校验和是我在高性能网络中的瓶颈。由于NIC将支持校验和卸载,并且ethtool也说它已启用,我希望我可以使用校验和卸载。但是当我使用原始套接字时,似乎没有计算校验和。有没有办法使用原始套接字启用tcp校验和卸载?编辑:实际上我的机器/NIC(Thinkpadx201)的行为似乎不太符合逻辑:当使用普通的tcp套接字发送数据包时,所有校验和都是错误的,在环回接口(interface)上以及机器之间。有趣的是,另一台机器默默地传送数据包?Edit2:好的,现在我只是查看了错误机器上的数据包,卸载工作正常。但是当我将tcp_ch

c - getsockopt 类似 TCP_INFO 的 UDP 统计信息

我使用的是Linux内核2.6.32(x86_64),可以通过将TCP_INFO传递给getsockopt并接收tcp_info来获取TCP统计信息struct,在/usr/include/netinet/tcp.h中定义。我可以获得类似的UDP统计信息吗?(可能更少,因为没有内置的拥塞控制和重传等。但我对我能得到的任何统计数据都很满意) 最佳答案 TCP_INFO的字面意思是TCP的信息。UDP没有信息的原因是它是无状态的。没有保证传输,不是rtf,没有窗口大小,没有太多信息可提供。如果你真的想获取一些额外的信息,请查看man2r

java - java游戏使用TCP和UDP

我正在制作一个实时java游戏供我的friend们在LAN上玩。该游戏在客户端-服务器架构中运行,并且它现在对所有内容都使用UDP(用于位置更新和加入游戏)。当我和我的friend通过Internet测试游戏时,一些重要的UDP数据包丢失了(比如生成敌人的数据包)。所以我的问题是,制作实时多人游戏的最佳解决方案是什么?我可以将UDP用于必要的更新数据包,将TCP用于诸如登录、断开连接、聊天等数据包吗?我可以在同一个端口和套接字上使用这两种协议(protocol)吗? 最佳答案 只是想帮助那些偶然发现其他答案中给出的令人难以置信的糟糕

python - 如何在套接字中使用 raw_input

在我说什么之前,如果您对标题感到困惑,那就是说我使用了这段代码:cmd,addr=sock.accept()我怎么能将这段代码用于客户看到raw_input,这是我的代码:fromsocketimport*sock=socket(AF_INET,SOCK_STREAM)HOST="0.0.0.0"PORT=8080sock.bind((HOST,PORT))sock.listen(5)whileTrue:cmd,addr=sock.accept()cmd.send('Welcometoserver.py\r\n')main=raw_input(">")这是我的输出:-bash-4.1#

python-2.7 - scapy 中的 <Raw> 标签,如何解码内容?

我使用Scapy嗅探TCP数据包,试图从响应中获取HTML代码。>>>A=sniff(filter='tcp')(然后我刷新了一个网页)>>>A>>>A.show()0000Ether/IP/TCP192.168.0.2:60210>74.125.28.95:wwwS(显然不止这些,这只是一个例子)>>>A[28]>\xe7\x07\x8f];\xdf\x13\x0eT\xd7\xcc\xbe\xf2\xf57\x80\x02\x00\x03\xac\xcc}\xcd\x02\xb4\x9e\x05h\x9d\xdb\x07\x18\xa0\x00\x9c\xfd\xd0\xc7\x8

networking - TCP、UDP、SCTP、RUDP 还是 RAW?

我目前正在开发一个网络库,但我不知道应该用哪种方式创建它。该库应设计为与游戏一起使用。需要可靠和不可靠的数据包。我应该使用“TCP和UDP”、“UDP和SCTP”、“UDP并创建RUDP协议(protocol)”还是“RAW并从头开始构建所有内容”?这是一个很长的问题,让我苦苦挣扎!我认为创建一个“健壮的”RUDP协议(protocol)是最好的解决方案,但我可以做一个健壮的吗?(额外的工作不是问题)感谢您的宝贵时间。 最佳答案 每一个都是有原因的。TCP用于有点慢的可靠连接,UDP用于快速不可靠的连接,STCP不常用,因此它肯定不