(Socket.SendTo)如何响应/将数据发送回服务器开始接收的客户端?C#

马里奥1159

我正在使用UDP服务器,可以很好地接收数据,但是我不知道如何存储端点以将数据发送回去。

SetupServer()我不知道该如何获得评论的终极评论EndPoint

这是我的服务器代码:

static private byte[] buffer = new byte[1024];
    static private Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
    private const int port = 904;

    static void Main(string[] args) {
        SetupServer();
        Console.ReadLine();
    }
    static private void SetupServer() {
        Console.WriteLine($"{DateTime.Now}: Setting up server on {port}...");
        EndPoint remoteEP = new IPEndPoint(IPAddress.Any, port);
        serverSocket.Bind(remoteEP);
        Console.WriteLine($"{DateTime.Now}: Server created successfully");
        serverSocket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref remoteEP,BeginReceive, null);
        //serverSocket.SendTo(buffer, 0, buffer.Length, SocketFlags.None, remoteEP);
    }
    static private void BeginReceive(IAsyncResult ar) {
        int recv = serverSocket.EndReceive(ar);
        byte[] dataBuf = new byte[recv];
        Array.Copy(buffer, dataBuf, recv);
        Console.WriteLine($"{DateTime.Now}: {Encoding.ASCII.GetString(dataBuf)}");

        EndPoint remoteEP = new IPEndPoint(IPAddress.Any, port);
        serverSocket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref remoteEP, BeginReceive, null);
    }
马里奥1159

我知道该怎么做。serverSocket.EndReceive(ar)BeginReceive方法中的替换为EndReceiveFrom(ar,ref epSender)并使用该端点(epSender)可以调用该BeginReceiveFrom方法。

    static private void SetupServer() {
    Console.WriteLine($"{DateTime.Now}: Setting up server on {port}...");
    EndPoint remoteEP = new IPEndPoint(IPAddress.Any, port);
    serverSocket.Bind(remoteEP);
    Console.WriteLine($"{DateTime.Now}: Server created successfully");
    serverSocket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref remoteEP,BeginReceive, serverSocket);
}
static private void BeginReceive(IAsyncResult ar) {
    EndPoint epSender = new IPEndPoint(IPAddress.Any, port);
    int recv = serverSocket.EndReceiveFrom(ar,epSender);
    byte[] dataBuf = new byte[recv];
    Array.Copy(buffer, dataBuf, recv);
    Console.WriteLine($"{DateTime.Now}: {Encoding.ASCII.GetString(dataBuf)}");

    serverSocket.SendTo(dataBuf,epSender)

    serverSocket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref remoteEP, BeginReceive, serverSocket);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C Socket TCP,将数组发送到服务器并在循环中响应回客户端

如何使用socket.io将响应发送回客户端?

socket.io-无法将数据从服务器发送到特定客户端

Netty服务器发送Protobuf编码的byte [],但C#客户端Socket.Receive始终为0

如何通过python socket.io从服务器到客户端无限循环发送数据?

如何从服务器发送cookie到socket.io客户端?

如何在Unity / C#服务器和Android / Java客户端之间创建Socket连接?

每当变量在服务器端更改其值时,如何使用socket.io将数据发送到客户端?

Express与Socket.IO:服务器不接收来自客户端的发射

Socket.io客户端未从服务器接收消息

Android客户端未从Node.js服务器接收socket.io消息

Socket.io nginx Redis - 客户端未从服务器接收消息

socket.io 客户端无法连接和接收服务器发出的消息

客户端未从socket.io中的服务器接收消息

通过TCP将android(socket客户端)与c ++(socket服务器)连接

使用socket.io-client库从客户端向套接字服务器发送数据

为什么我的Socket.IO服务器没有响应我的Firecamp和C#客户端?

SSL socket.io 客户端未收到服务器响应

客户端建立连接时,Socket.io服务器无响应

在Socket.io中将回调函数从客户端发送到服务器

socket.io 客户端无法向服务器发送消息

服务器未收到从客户端发送的 socket.io 消息

从Node JS Socket客户端向MINA套接字服务器发送消息

带有Socket.IO的ReactJS,服务器向客户端发送,但客户端不向服务器发送

如何使用socket.io从客户端调用服务器端功能?

从客户端向服务器发送虚假的socket.io请求(node.js / socket.io)

当客户端使用 Socket.io 发送到服务器时关闭快速服务器

Socket.io:socket.emit 不发射客户端/socket.on 不接收服务器端

Socket.io-在服务器和客户端之间同步数据