TcpClient和TCPListener实列化时, 是否就绑定了端口?如何直接访问代表这个端口的终结点
TcpClient和TCPListener实列化时, 是否就绑定了端口?怎么直接访问代表这个端口的终结点?
TcpClient和TCPListener实列化时可以用终结点实列,那是不是实例成功就代表绑定上了呢?
我在一个方法中创建的并连接好了。我在另一个方法中(想的是专门处理流)怎么访问这个终结点呢?
------解决思路----------------------
初始化一个服务端对象,通常可以写
而初始化一个客户端对象,需要写
这种,这时候的终结点是指服务器握手地址,而不是什么“本地绑定”。客户端随机地使用一个最事宜的端口用来发送信息、接受服务器的返回值。不需要你去绑定什么端口。
------解决思路----------------------
服务器
客户端
网上找个例子,先看一下套接字编程的基础知识
TcpClient和TCPListener实列化时可以用终结点实列,那是不是实例成功就代表绑定上了呢?
我在一个方法中创建的并连接好了。我在另一个方法中(想的是专门处理流)怎么访问这个终结点呢?
------解决思路----------------------
初始化一个服务端对象,通常可以写
var server = new TcpListener(IPAddress.Any, 9120);这类绑定了端口的写法,因为它需要被动监听握手信息。
而初始化一个客户端对象,需要写
var client = new TcpClient("118.110.110.10", 9120);
var stream = client.GetStream();
这种,这时候的终结点是指服务器握手地址,而不是什么“本地绑定”。客户端随机地使用一个最事宜的端口用来发送信息、接受服务器的返回值。不需要你去绑定什么端口。
------解决思路----------------------
服务器
//服务器启动侦听
IPEndPoint localep = new IPEndPoint(IPAddress.Any, 9099);
listener = new TcpListener(localep);
listener.Start(10);//最大队列数
客户端
Socket client = new Socket(af, SocketType.Stream, ProtocolType.Tcp);
if (!client.Connected)
{
IPEndPoint remoteep = new IPEndPoint(IPAddress.Parse(“192.168.1.1"), 9099);
AsyncCallback callback = new AsyncCallback(ConnectCallback);
//启动新的连接
client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.BeginConnect(remoteep, ConnectCallback, client);
}
网上找个例子,先看一下套接字编程的基础知识