C# 如何修复客户端应用程序的端口

C# 如何修复客户端应用程序的端口,c#,sockets,networking,client,console-application,C#,Sockets,Networking,Client,Console Application,我正在visual studio(c#)中开发控制台应用程序。我需要从服务器定义的IP和端口持续侦听。在从该IP和端口监听时,我将从中获取呼叫日志数据。问题是我正在开发的客户端套接字将通过操作系统选择的任何空闲端口进行通信。PBX仅允许通过预先配置的端口号进行通信。我找不到任何关于如何提前为客户端配置端口以便应用程序仅从该端口通信的答案。任何帮助都是好的 许多人表示要更改web应用程序的端口,但我想为控制台应用程序配置端口。 下面是我的代码示例,如果它有任何帮助: using System; u

我正在visual studio(c#)中开发控制台应用程序。我需要从服务器定义的IP和端口持续侦听。在从该IP和端口监听时,我将从中获取呼叫日志数据。问题是我正在开发的客户端套接字将通过操作系统选择的任何空闲端口进行通信。PBX仅允许通过预先配置的端口号进行通信。我找不到任何关于如何提前为客户端配置端口以便应用程序仅从该端口通信的答案。任何帮助都是好的

许多人表示要更改web应用程序的端口,但我想为控制台应用程序配置端口。 下面是我的代码示例,如果它有任何帮助:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace ClientSocket
{
    public class Program
    {
        static void Main(string[] args)
        {
            TcpClient clientSocket = new TcpClient();
            clientSocket.Connect(destinationPort, destinationPort);
            //((System.Net.IPEndPoint)(clientSocket.Client.LocalEndPoint)).Port = 3389; I want to fix my port in advance something like this or any other way
            Console.WriteLine(" >> Client Started");

            while (true)
            {
                try
                {
                    NetworkStream serverStream = clientSocket.GetStream();
                    byte[] outStream = System.Text.Encoding.ASCII.GetBytes("" + "$");
                    Console.WriteLine("\nPing to Server:");
                    serverStream.Write(outStream, 0, outStream.Length);
                    serverStream.Flush();

                    byte[] inStream = new byte[10025];
                    serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize);
                    string returndata = System.Text.Encoding.ASCII.GetString(inStream);
                    Console.WriteLine("Reply from server:" + returndata);
                    Thread.Sleep(5000);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }
        }
    }
}

无论您对哪一行进行了注释,都足以设置本地端点端口号

IPEndPoint ipLocalEndPoint = new IPEndPoint(localIPAddress, clientPort);
TcpClient clientSocket = new TcpClient(ipLocalEndPoint);
clientSocket.Connect(serverIP, serverPort);

无论您对哪一行进行了注释,都足以设置本地端点端口号

IPEndPoint ipLocalEndPoint = new IPEndPoint(localIPAddress, clientPort);
TcpClient clientSocket = new TcpClient(ipLocalEndPoint);
clientSocket.Connect(serverIP, serverPort);

我有pbx型号-“Matrix Eterrence NE”在调试中,第一次显示类似>>客户端启动:Ping到服务器:从服务器回复:???????一些问号和微笑在5秒后Ping到服务器:回复来自服务器:永恒登录:$有任何帮助!谢谢。根据你的程序,它只打印从服务器收到的任何数据。您需要检查服务器协议,以确定服务器程序是否已编写以发送某种确认信息……并且还需要确保在打印读取的数据时,您正在打印整个阵列。相反,请尝试仅转换接收的字节数(即使用serverStream.Read()函数返回值来获取从服务器读取的字节数)。回答很有帮助。起初,我认为这是客户端编程,但后来我发现我需要编写服务器,并将在我这方面接收数据。是的,我不应该打印整个数组。是的,现在我正在修剪serverStream.Read()以去除结尾中的空值很高兴听到你整理好了。我有pbx模型-“Matrix Etermine NE”正在调试,第一次它显示类似>>的答案:客户端启动:Ping到服务器:服务器回复:???????一些问号和微笑在5秒后Ping到服务器:回复来自服务器:永恒登录:$有任何帮助!谢谢。根据你的程序,它只打印从服务器收到的任何数据。您需要检查服务器协议,以确定服务器程序是否已编写以发送某种确认信息……并且还需要确保在打印读取的数据时,您正在打印整个阵列。相反,请尝试仅转换接收的字节数(即使用serverStream.Read()函数返回值来获取从服务器读取的字节数)。回答很有帮助。起初,我认为这是客户端编程,但后来我发现我需要编写服务器,并将在我这方面接收数据。是的,我不应该打印整个数组。是的,现在我正在修剪serverStream.Read()以去除结尾中的空值。很高兴听到你整理好了。