Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在.net套接字程序中手动设置客户端的IP地址_C#_.net_Multithreading_Client Server_Serversocket - Fatal编程技术网

C# 如何在.net套接字程序中手动设置客户端的IP地址

C# 如何在.net套接字程序中手动设置客户端的IP地址,c#,.net,multithreading,client-server,serversocket,C#,.net,Multithreading,Client Server,Serversocket,我创建了一个多线程的客户机-服务器聊天应用程序,并想用多个客户机测试我的应用程序。我计划在客户端创建一个模拟器,创建一个随机端口和IP。我的意思是,我的客户机系统应该使用多个端口运行(不需要运行多次) 我试图找出在客户机类中提供客户机IP和端口号的代码部分,但没有找到。我只找到了提供服务器IP和端口的部分 这是我建立联系的部分 private void cmdConnect_Click(object sender, System.EventArgs e) { try

我创建了一个多线程的客户机-服务器聊天应用程序,并想用多个客户机测试我的应用程序。我计划在客户端创建一个模拟器,创建一个随机端口和IP。我的意思是,我的客户机系统应该使用多个端口运行(不需要运行多次)

我试图找出在客户机类中提供客户机IP和端口号的代码部分,但没有找到。我只找到了提供服务器IP和端口的部分

这是我建立联系的部分

private void cmdConnect_Click(object sender, System.EventArgs e)
    {
        try
        {
            //create a new client socket ...
            m_socWorker = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
            String szIPSelected  = txtIPAddress.Text;
            String szPort = txtPort.Text;
            int  alPort = System.Convert.ToInt16 (szPort,10);


            System.Net.IPAddress    remoteIPAddress  = System.Net.IPAddress.Parse(szIPSelected);
            System.Net.IPEndPoint   remoteEndPoint = new System.Net.IPEndPoint(remoteIPAddress, alPort);
            m_socWorker.Connect(remoteEndPoint);
        }
        catch (System.Net.Sockets.SocketException se)
        {
            MessageBox.Show ( se.Message );
        }
    }
还有我的数据发送部分

private void cmdSendData_Click(object sender, System.EventArgs e)
    {
        try
        {
            Object objData = txtData.Text;
            byte[] byData = System.Text.Encoding.ASCII.GetBytes(objData.ToString ());
            m_socWorker.Send (byData);
        }
        catch(System.Net.Sockets.SocketException se)
        {
            MessageBox.Show (se.Message );
        }
    }

如果在连接到服务器之前确实需要设置客户端套接字地址,并且在多宿主系统上强制内核绑定到特定的本地地址时,这通常是一种有效的方案,那么在调用
socket.Connect()
之前可以调用
socket.bind()

您也可以在
IPEndPoint
构造函数中明确指定本地端口号,但必须确保端口未被使用。如果将端口号保留为0,则系统将选择(几乎)任意的空闲端口号


请注意,您不能只选择任意客户端IP地址-它必须是在系统启用的网络接口上配置的地址之一。有关配置内容,请参阅
ipconfig/all
的输出。如果只想测试,可以为接口分配多个IP地址。

不需要设置客户端IP端口,它是动态分配的-请参阅临时端口:。只能分配服务器端口。所以,只需创建多个客户端实例并将它们连接到服务器。我知道这一点。但我需要通过创建不同的端口,使用来自同一客户机的批量数据测试我的应用程序。有没有办法在客户端sideNo中手动设置ip和端口地址,但您可以创建几个客户端套接字实例。例如,m_socWorker可以是套接字类实例的数组。每个套接字实例在连接时都会收到唯一的临时端口号。如何创建多个客户端套接字实例。我对此一无所知。如果你不介意,请解释一下。。
IPAddress  localIPAddress = IPAddress.Parse(szLocalIP);
IPEndPoint localEndPoint  = new IPEndPoint(localIPAddress, 0);
m_socWorker.Bind(localEndPoint);

m_socWorker.Connect(remoteEndPoint);