当前位置:  开发笔记 > 编程语言 > 正文

C#指定客户端端口

如何解决《C#指定客户端端口》经验,为你挑选了1个好方法。

我有以下有关异步套接字编程的代码:

    public void ServerBeginAceept(ushort ServerPort)
    {
        try
        {
            ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, ServerPort);
            ServerSocket.Bind(ipEndPoint);
            ServerSocket.Listen(MAX_CONNECTIONS);
            IAsyncResult result = ServerSocket.BeginAccept(new AsyncCallback(ServerEndAccept), ServerSocket);
        }
    }


    public void ServerEndAccept(IAsyncResult iar)
    {
        try
        {
            ServerSocket = (Socket)iar.AsyncState;
            CommSocket = ServerSocket.EndAccept(iar);
        }
    }

    public void ClientBeginConnect(string ServerIP, ushort ServerPort)
    {
        try
        {
            CommSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse(ServerIP), ServerPort);
            IAsyncResult result = CommSocket.BeginConnect(ipEndPoint, new AsyncCallback(ClientEndConnect), CommSocket);

        }
    }


    public void ClientEndConnect(IAsyncResult iar)
    {
        try
        {
            CommSocket = (Socket)iar.AsyncState;
            CommSocket.EndConnect(iar);

            OnNetworkEvents eventArgs = new OnNetworkEvents(true, "Connected: " + CommSocket.RemoteEndPoint.ToString(), string.Empty);
            OnUpdateNetworkStatusMessage(this, eventArgs);
        }
    }

那么代码没有任何问题(我已经简化了它,它在这里作为证据证明我正在努力,而不是寻找作业帮助!)

我的问题是:如何从指定的客户端端口与服务器通信?这里的代码都是基于服务器的端口,这很好用.但我想实现与客户端上的特定端口进行通信的代码,而不仅仅是服务器随机生成的代码.

感谢您的时间.



1> Moose..:

为什么要使用特定端口?

客户端端口是按设计随机选择的,因为只有一个套接字在没有监听该套接字时一次可以打开一个端口.

例如,如果您始终在HTTP连接的客户端使用端口80,则该计算机上只有一个套接字可以一次连接到端口80.这意味着HTTP连接不能并行.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有