标签: udp

仅发送第一个 UDP 数据包,然后连接被拒绝

我设法制作了一个可重现的示例(保留了我的大型原始源代码中的所有内容)。问题是只a发送了第一封信。然后,我明白了send() failed: Connection refused。我不知道该怎么做,这实际上是应该起作用的最小代码。

我应该说,只有当我在程序开始时打开套接字一次并在程序结束时关闭它时,代码才不起作用。如果我为每个单独的 send() 打开一个套接字,然后立即关闭它,则不会出现错误。

#include <pcap.h>
#include <cstdio>
#include <getopt.h>
#include <cstring>
#include <cstdlib>
#include <string>
#include <iostream>
#include <map>
#include <vector>

#define BUFSIZE 256

#define __FAVOR_BSD

#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <unistd.h>
#include<netdb.h>
#include<err.h>

#include <arpa/inet.h>

#include <netinet/ether.h>

#include <netinet/ip.h>
#include <netinet/ip6.h>

#include <netinet/tcp.h>
#include <netinet/udp.h>

#include <netinet/ip_icmp.h>
#include <netinet/icmp6.h>



using namespace std;

#define BUFFER 1024                // buffer length
int sock;                        // socket descriptor

void start_connection(){
    struct sockaddr_in server, from; …
Run Code Online (Sandbox Code Playgroud)

c++ sockets udp

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

发送到 C 中关闭的 UDP 套接字不会引发错误

我正在尝试“测试”UDP 套接字是否打开作为终止程序的一种方式:

 int flags = fcntl(s, F_GETFL, 0);
        fcntl(s, F_SETFL, flags | O_NONBLOCK);
        int x = recv(s, buffer, sizeof(buffer), 0);
        if (x == -1)
        {
            char temp[] = "Testing Connection";
            int x = sendto(s, temp, sizeof(temp), 0, (struct sockaddr *)&si_other, sizeof(si_other));
            printf("%d\n",x);
            if(x == -1){
                return;
            }
            continue;
        }
Run Code Online (Sandbox Code Playgroud)

但是 if 语句没有被触发。它正在发送数据的 UDP 套接字运行以下行(我知道它运行是因为 print 语句打印

    printf("Closing the socket\n");
    close(s);
    return;
Run Code Online (Sandbox Code Playgroud)

即使它尝试发送到的 udp 套接字已关闭,sendto 也会持续返回正值。有没有什么办法解决这一问题?

c sockets udp

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

在小型客户端-服务器应用程序中更改 JavaFX 标签文本

我创建了一个小型的客户端-服务器程序,其工作原理如下:客户端在五秒内向服务器发送一个随机数,然后服务器发送一个(或多或少出名的)报价给客户端。该随机数表示某些引号所在的 ServerClass 中 ArrayList 的索引。连接运行良好,客户收到报价,我可以轻松地使用 sysout 将其打印出来。我现在的问题是,我想在一个小的 JavaFX / FXML 文件中将收到的报价显示为标签,并且当从服务器传入新报价时,文本应该每五秒更改一次。QuotesClient 类(即客户端)也是相应 FXML 文件的控制器,但问题是因为我的 Client 类中负责处理传入 UDP 数据包的方法是静态的,当然我无法访问非静态在此方法中进行标记。

我也尝试将标签设为静态,但随后我收到一个 NullPointerException:

java.lang.NullPointerException
    at Aufgabe1.QuotesClient.main(QuotesClient.java:48)
    at Aufgabe1.QuotesApp.lambda$1(QuotesApp.java:32)
    at java.base/java.lang.Thread.run(Thread.java:844)

Run Code Online (Sandbox Code Playgroud)

这是我的客户端文件:

public class QuotesClient {
    private static final int BUFSIZE = 508;
    
    @FXML
    private static Label zitatLabel; //Thats the quoteLabel i wanna change

    public static void main(String[] args) throws UnknownHostException {
        var host = "localhost";
        var localPort = 40000;
        var serverPort = 50000; 
        try (var socket = new DatagramSocket(localPort)) {
            while(true) {
                Random …
Run Code Online (Sandbox Code Playgroud)

java udp network-programming client-server javafx

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

UDP recvfrom调用返回错误的端口号.为什么?

我正在使用UDP播放'recvfrom'和'sendto'电话.我有一个客户端只在端口6000上广播UDP数据包.我有一个服务器绑定端口6000上的套接字,并执行单个recvfrom.

问题是从recvfrom返回的struct sockaddr的sin_port成员总是不正确的.为什么?

我会发布一些源代码,但有人已经发布了这个问题(没有答案),而且我使用的代码与他几乎相同.此外,您可以阅读他的帖子获取有关此问题的更多信息:FORUM POST.

提前致谢

编辑:我真的认为'原因'来自'nos'的答案可能是问题.我怎么检查呢?

c sockets port udp

-1
推荐指数
1
解决办法
3698
查看次数

Moto G 不通过 WIFI 网络接收 UDP 数据包

我的接收器在 Moto G 中没有收到任何 UDP 数据包,但它适用于其他设备。

通过 WiFi 网络,我已经成功地从其他设备发送了 UDP 数据包。但是在 Moto E 和 Moto G 中它不起作用。

谁能帮助弄清楚为什么它不适用于 Moto G/E?

我的问题是我没有通过 WiFi 网络接收任何 UDP 数据包。

android udp

-1
推荐指数
1
解决办法
1743
查看次数

如何在 C# 中计算 UDP 传输速率 (kbps)?

首先,我知道 UDP 不是一个可靠的协议,但我需要在 UDP 中做到这一点,而且我知道最终可能会发生的后果。

让我们假设我有一个长byte数组,我将它分成 32 字节的块分成List<byte[]>. 这意味着发送的每个数据包的长度为 32 字节。

这些数据包将foreach循环发送,我不在乎它们是否到达目的地。这意味着我不期待主持人的确认(至少现在是这样)。

我的问题是,我将如何计算服务器在接收数据包时的当前传输速率(最好以 kbps 为单位)?

我对如何实现这样的计算感到有些困惑......

c# sockets udp rate transfer

-2
推荐指数
1
解决办法
4983
查看次数

UDP数据包未读取会发生什么?

在C中,我有一个简单的服务器/客户端UDP套接字编程示例.客户端以高速率向服务器发送数据包,而服务器读取每个传入的消息并将其发送回客户端.客户端永远不会读取任何传入的消息.

有没有理由相信发送回客户端的数据包会填满客户端的缓冲区?如果客户没有阅读任何内容,他们究竟会发生什么?它们会立即被丢弃吗?

c sockets buffer udp

-2
推荐指数
2
解决办法
398
查看次数

是否可以将tcp服务器连接到winsock中的udp客户端

我在winsock2中做了一个简单的服务器客户端控制台聊天框.然后我的同事问我是否可以进行单服务器多客户端连接,其中SERVER将在TCP中,而CLIENTS将在UDP中.此外,客户端不知道服务器的IP但知道端口号,即客户端必须搜索服务器然后连接它.所有这些都通过LAN.

任何人都可以告诉我如何做这样的程序,或者如果可能的话可以发布代码供参考.

c udp tcp winsock winsock2

-2
推荐指数
1
解决办法
887
查看次数

Java - 不推荐使用的API - DataInputStream.readLine

我的教授.给了我这个TCP/UDP的例子,他说这对他有用.但是当我去编译时,我得到一个弃用的API错误,说readLine不再使用了...

我该如何处理?

码:

import java.io.*;
import java.net.*;

public class Server{

    static  Socket clientSocket = null;
    static  ServerSocket serverSocket = null;

    // This chat server can accept up to 10 clients' connections

    static  clientThread t[] = new clientThread[10];

    public static void main(String args[]) {

    // The default port

    int port_number=2222;

    if (args.length < 1)
        {
        System.out.println("Usage: java MultiThreadChatServer \n"+
                   "Now using port number="+port_number);
        } else {
        port_number=Integer.valueOf(args[0]).intValue();
        }

        try {
        serverSocket = new ServerSocket(port_number);
        }
        catch (IOException e)
        {System.out.println(e);}

    while(true){
        try …
Run Code Online (Sandbox Code Playgroud)

java udp tcp deprecated

-3
推荐指数
2
解决办法
3387
查看次数

C++ UDP跨平台,快速库(不是提升)

我期待着C++,UDP,跨平台库.

有没有简单的使用和快速(免费为商业purpouse)库?

我想要一个小而独立的图书馆,而不是一个最大或最抽象的解决方案的一部分,提升我不感兴趣(并解释为什么不是一个真正的问题,可能是论坛讨论,但我们现在是偏离主题).如果库是用C++而不是C风格编写的,那也不错.

c++ udp static-libraries

-3
推荐指数
2
解决办法
7516
查看次数

如何使用erlang构建TCP服务器?

我是erlang的新手,有人可以给我一些用于Erlang的TCP/UDP服务器的公会吗?我有一个带有c的TCP/UDP客户端.

linux erlang udp tcp

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

如何在linux中使用iptables打开UDP端口

我正在摆弄我的树莓派,并且我有一个正在运行的音乐盒(带有 mopidy)。除此之外,我还想实现一些其他奇特的东西。我想从我的智能手机(带有 Tasker)向我的 PI 发送一条(UDP?)消息。但我总是收到“连接被拒绝”消息。我尝试在 iptables 中打开任何 UDP/TCP 端口。接收我尝试过的消息 netcat -ul 222

为了编辑 iptables,我使用: sudo nano /etc/network/iptables sudo iptables-restore /etc/network/iptables sudo iptables-save 查看打开了哪些端口,我使用: netstat -tuplen 但我不知道在这个输出上我需要什么来实现我的东西。我的方法是正确的还是完全错误的:-)?最后,我想收到任何消息,将其转换为任何其他操作(例如reboot),提前致谢!

linux udp tcp

-4
推荐指数
1
解决办法
5万
查看次数