DatagramSocket bind()和connect()的区别?

Fab*_*cio 5 actionscript-3

我阅读了文档,但目前尚不清楚它bind()connect()方法之间的区别.

Sco*_*t A 10

bind()使套接字侦听特定接口/端口上的传入请求.换句话说,服务器使用它来响应传入的请求.只有一个套接字可以绑定端口.

connect()使套接字连接到由不同套接字服务的地址/端口.换句话说,它被客户端用于连接到服务器.多个客户端可以连接到端口.注意:连接()不需要与UDP(数据报)套接字一起使用,只需要TCP/IP.UDP是一种广播协议,connect()甚至不要求套接字正在监听另一端.

这样的事情(改编自文档和未经测试)应该发送和接收消息"你好,萝卜!" 到12345端口:

package
{
    import flash.events.DatagramSocketEvent;
    import flash.net.DatagramSocket;

    public class TestClass
    {
        private var serverSocket:DatagramSocket = new DatagramSocket();
        private var clientSocket:DatagramSocket = new DatagramSocket();

        public function TestClass():void
        {
            this.serverSocket.bind(12345, "127.0.0.1");
            this.serverSocket.addEventListener(DatagramSocketDataEvent.DATA, dataReceived);
            this.serverSocket.receive();

            send("Hello, turnip!");
        }

        public function sendData(message:String):void
        {
            var data:ByteArray = new ByteArray();
            data.writeUTFBytes(message);

            try
            {
                clientSocket.send(data, 0, 0, "127.0.0.1", 12345);
                trace("sending:  " + message);
            }
            catch (error:Error)
            {
                trace(error.message);
            }
        }

        private function dataReceived(e:DatagramSocketDataEvent):void
        {
            var data:String = e.data.readUTFBytes(e.data.bytesAvailable);
            trace("received: " + data);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)