【linux下的UDP套接字编程】教程文章相关的互联网学习教程文章

Linux TCP套接字处于阻塞模式

当我在阻塞模式下创建TCP套接字并使用send(或sendto)函数时,函数调用何时返回? 是否需要等到套接字的另一端接收到数据?在这种情况下,如果互联网上出现交通拥堵,它会长时间阻塞吗?解决方法:发送者和接收者(以及可能的中介)都将缓冲数据. 成功发送数据并不能保证接收端已接收到数据. 通常写入阻塞套接字,只要发送方缓冲区中有空间,就不会阻塞. 一旦发送者的缓冲区已满,则将写入WILL块,直到其中有用于整个写入的空间为止. 如果写操...

linux-为什么wineserver在后台运行时在子进程中设置主套接字?【代码】

Wine服务器启动时,它将通过open_master_socket()创建一个Unix套接字,稍后启动的所有Wine进程都使用此套接字连接到Wine服务器,这是来自server / request.c,open_master_socket()的代码:771 if (!foreground)772 {773 if (pipe( sync_pipe ) == -1) fatal_perror( "pipe" );774 pid = fork();775 switch( pid )776 {777 case 0: /* child */778 setsid();779 ...

linux-识别套接字客户端中的远程断开连接

如何从套接字客户端程序中发现远程连接已关闭(例如服务器已关闭).当我执行一次接收并且服务器关闭时,如果我没有设置任何超时,它将阻塞.但是,在我的情况下,我无法放置任何可靠的超时值来解决它,因为否则即使服务器启动,recv也会超时,但响应时间实际上比我设置的超时值长.解决方法:不幸的是,ZeroMQ只是将其传递给下一层.因此,您要在ZeroMQ之上实现的协议必须处理该问题. Heartbeats are recommended.基本上,如果连接空闲,则仅让一侧发...

linux中的分段错误(C中的套接字编程(TCP))【代码】

我只是通过一些网站学习Linux上的套接字编程,这是使用TCP在服务器端的部分代码:#define BufferLength 100 #define SERVPORT 3111 int main() {/* Variable and structure definitions. */int sd, sd2, rc, length = sizeof(int);int totalcnt = 0, on = 1;char temp;char buffer[BufferLength];struct sockaddr_in serveraddr;struct sockaddr_in their_addr;fd_set read_fd;/* Get a socket descriptor */if((sd = socket(AF_INE...

来自Linux-Java线程转储的套接字信息【代码】

在分析性能问题时,我每5秒进行一次连续线程转储,然后使用武士线程转储分析器进行分析.注意,许多线程处于可运行状态,并且在所有情况下,堆栈堆栈下面的内容连续不断.但是我找不到他们正在与哪个主机通信.我尝试使用命令ss -t -a,观察ss -tp和netstat -A inet -p,但是无法将其结果与线程相关联.任何想法?提前致谢.Thread dump 2/5 "TP-Processor125" prio=5 tid=0x25756 nid=0x649c RUNNABLE (JNI Native Code) - stats: cpu=828 b...

c-如何在Linux中创建原始套接字而不缓冲接收数据包?可能吗?

我使用Linux,并创建特定的应用程序.我使用原始套接字.而且,当我打开它并接收recv(…)时,我得到了数据包,被送往更早的地方,而且据我所知,它们被缓冲在内核或网卡驱动程序中.但是我不需要它们.我只需要包装,打开插座后就到了.当然,我可以丢弃此数据包,但我不知道需要丢弃多少数据包,因为每次数据包的数量都不同.如何创建此套接字?可能吗?解决方法:取决于您如何协商主机/端口进行通信,并且您是否可以控制发送这些数据包的方式? 你可...

c-在不接受Linux的情况下调用监听套接字连接【代码】

我在Ubuntu Linux上运行代码,应该使用Set并选择以检查侦听套接字何时有活动(即有人尝试连接)并让他们连接,麻烦的是选择ALLWAYS返回0,而当我尝试连接时它只是直接连接.但是在服务器上从未调用Accept,因为select总是返回0,所以我想知道是什么原因引起的?namespace SocketLib {const int MAX = FD_SETSIZE;class SocketSet { public:SocketSet();void AddSocket( const Socket& p_sock );void RemoveSocket( const Socket& p_sock );...

linux-如何在网桥上生成套接字错误【代码】

我正在尝试创建一个测试环境,以测试客户端和服务器之间的网络错误处理.我不能在任何一个上更改软件.这两个设备将通过Linux网桥连接,我将使用各种带宽整形工具来限制带宽或完全阻止流量,以模拟各种错误情况. 我尚不知道如何实现的另一件事是在现有连接上生成套接字错误.我希望使用现有的Linux工具/实用程序,但也许可以在足够的指导下编写我自己的工具.我对基本网络,TCP和UDP等非常熟悉,但对桥接却不熟悉. 任何人都可以建议一种产生套...

使用Linux内核模块发送的UDP数据包不使用套接字【代码】

我正在编写一个创建IP数据包的内核模块.现在,我想发送此数据包,但尚未为其传输创建任何套接字. 有什么方法可以借助内核例程直接发送它. 由于我已经跟踪了Linux内核代码以进行数据包传输,因此在net / core / dev.c中定义了一个名为dev_hard_start_xmit()的函数.我们可以使用吗? 其实我不想使用套接字.解决方法:您不需要套接字就可以在内核中发送UDP数据包,只需分配一个skb,自己构造IP报头和UDP报头,最后通过dev_queue_xmit()将其发...

在Linux中读取send-q TCP套接字的内容【代码】

我有一个TCP客户端,它不断向服务器发送数据.客户端与服务器成功连接后,客户端会以几秒钟的间隔连续发送数据. 当客户端和服务器之间的链接在发送少量数据后断开连接时,我知道TCP根据TCP_retries2中的值重新传输数据,我将该值配置为8,从而在100秒后出现写入错误.但是send-q中将有一些未确认的数据包. 有没有办法在关闭此套接字之前在我的程序中的send-q中读取此未确认数据包的内容,还是我应该记住发送数据并在再次连接后重新发送?还...

linux-在其他应用程序创建的现有套接字上查看套接字选项吗?【代码】

我想测试是否在现有套接字上设置了特定的套接字选项.即,几乎您可以在其中看到的所有内容:#!/usr/bin/env python '''See possible TCP socket options'''import socketsockettypelist = [x for x in dir(socket) if x.startswith('SO_')] sockettypelist.sort() for sockettype in sockettypelist:print sockettype任何人都知道如何在现有套接字(即由其他进程创建的套接字)上看到这些选项吗? las,我阅读的关于Python套接字编程的几...

linux-在多个线程中从同一UDP套接字发送

我有多个线程需要将UDP数据包发送到不同的IP地址(仅发送,不需要接收任何内容).我可以在所有线程中重用同一个UDP套接字吗?解决方法:是的,我想你可以. 由于数据包是单独发送的,尽管它们的接收顺序是不确定的,但UDP已经存在. 因此,在同一套接字中发送多个线程是可以的. 虽然,如果您正在使用套接字执行其他操作,例如bind(),close(),那么您可能会遇到竞争条件,因此您可能需要小心.

Linux C套接字:在recv调用时被阻止【代码】

在我的应用程序中,我为简单的http服务器创建了一个线程,然后从我的应用程序中尝试连接到http服务器,但是在recv调用中控件被阻止/挂起. 但是,如果尝试使用linux GET命令连接到应用程序的http服务器,则我将成功连接到http服务器. 据我对谷歌搜索的了解,我发现这不是正确的方法. 但是,如果要执行此操作,则应以什么方式创建套接字,以便可以从应用程序内部连接http服务器. 以下是我的http服务器套接字的创建方式pthread_create(&pt_serv...

linux-Matlab Mex套接字包装库

是否有人使用Mex为MATLAB编写了POSIX套接字包装库?我基本上想打开,写作和阅读.同步和异步替代方案都很好.我的主要目标平台是Linux.我知道Mex,也知道POSIX套接字.我只是想确定没有其他人已经这样做?解决方法:如果要使用套接字,则有两个选择: 1)从MATLAB内部使用Java功能(有关快速示例,请参见SO上的this answer): > TCP/IP Socket Communications in MATLAB> TCP/IP Socket Communications in MATLAB using Java Classes 2)使用C...

linux – 如何找到TCP套接字的inode?【代码】

如何将/ proc / net / tcp的“inode”列中的值与/ proc /< pid> / fd /中的文件绑定? 我的印象是TCP中的inode列有一个套接字inode的十进制表示,但似乎并非如此. 例如,如果我运行telnet localhost 80,我会看到以下内容(telnet是pid 9021). / proc / net / tcp包含sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode 23: 0100007F:CE2A 0100007F:0050 01 00000000:00000000 00:00000...