Sac*_*K S 4 .net c# multithreading client-server serversocket
我创建了一个多线程客户端 - 服务器聊天应用程序,并希望用多个客户端测试我的应用程序.我打算在客户端创建一个模拟器,创建一个随机端口和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 );
}
}
Run Code Online (Sandbox Code Playgroud)
和我的数据发送部分
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 );
}
}
Run Code Online (Sandbox Code Playgroud)
如果您确实需要在连接到服务器之前设置客户端套接字地址,并且当人们想要强制内核绑定到多宿主系统上的特定本地地址时通常是有效的情况,您可以在调用Socket.Bind() 之前调用Socket.Connect():
IPAddress localIPAddress = IPAddress.Parse(szLocalIP);
IPEndPoint localEndPoint = new IPEndPoint(localIPAddress, 0);
m_socWorker.Bind(localEndPoint);
m_socWorker.Connect(remoteEndPoint);
Run Code Online (Sandbox Code Playgroud)
您还可以在IPEndPoint构造函数中显式指定本地端口号,但必须确保端口未在使用中.如果将端口号保留为0,则系统将选择(几乎)任意自由端口号.
请注意,您不能只选择任意客户端IP地址 - 它必须是在系统启用的网络接口上配置的地址之一.查看ipconfig /all配置内容的输出.如果您只是想测试,可以为接口分配多个IP地址.
| 归档时间: |
|
| 查看次数: |
7812 次 |
| 最近记录: |