C# socket编程,如何区分两个本地client(在同一台电脑上),使得两个client可通过server实现通信,高手赐教
2个回答
展开全部
建立client都随机分配一个端口;
获取接入服务器端的客户端IP和端口:
((IPEndPoint)TcpClient.Client.RemoteEndPoint).Address
((IPEndPoint)TcpClient.Client.RemoteEndPoint).Port
获取接入服务器端的客户端IP和端口:
((IPEndPoint)TcpClient.Client.RemoteEndPoint).Address
((IPEndPoint)TcpClient.Client.RemoteEndPoint).Port
追问
如何获取Client的IP和端口,能写具体点吗,多谢!
我将代码粘入程序,给我了一个错误提示“Error 2 An object reference is required for the non-static field, method, or property 'System.Net.Sockets.TcpClient.Client.get' ”
追答
我这只是示例啊,TcpClient是由服务器建立侦听后,有客户端登陆而引发事件后,由函数传递过来的参数!全码多了,我就做简单的一个过程
//起始函数,port为侦听端口
public MyTcpSever(int port)
{
//建立一个侦听,第一个参数为本机的IP,第2个参数为侦听端口
TcpListener tcplistener = new TcpListener(System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName())[0], port);
//开始侦听
tcplistener.Start();
//开始接受客户端的请求,第一个参数返调的函数,第2个参数为传递的参数
tcplistener.BeginAcceptTcpClient(new AsyncCallback(ClientAccept), tcplistener);
}
//当有客户端接入时引发的事件
private void ClientAccept(IAsyncResult result)
{
//提取传递的参数转换为TcpListener
TcpListener tcplst = (TcpListener)result.AsyncState;
//获取客户端信息,在此加入自己的处理代码段
TcpClient tcpclient = tcplst.EndAcceptTcpClient(result);
//获取客户端的IP和端口
string Ip = ((IPEndPoint)tcpclient.Client.RemoteEndPoint).Address;
int port = ((IPEndPoint)tcpclient.Client.RemoteEndPoint).Port ;
//继续侦听等待下一个客户端的接入
tcplst.BeginAcceptTcpClient(new AsyncCallback(sub_ClientAccept), tcplst);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询