TcpClient 的RemoteEndPoint与LocalEndPoint反过来啦。
public void AcceptThread()
{
while (true)
{
try
{
TcpClient client = Listener.AcceptTcpClient();
DCTUsers[client.Client.RemoteEndPoint.ToString()] = client;
if (lbUsers.InvokeRequired)
{
lbUsers.Invoke(new Action(() =>
{
lbUsers.Items.Clear();
foreach (var dc in DCTUsers)
{
lbUsers.Items.Add(dc.Key);
}
}));
}
WriteReveice(string.Format("【服务端】收到请求 {0}", client.Client.LocalEndPoint.ToString()));
Thread manageThd = new Thread(ManageThread);
manageThd.Start(client);
}
catch (Exception e)
{
WriteReveice(e.Message);
}
}
}
public void ManageThread(object _client)
{
try
{
TcpClient client = _client as TcpClient;
if (client != null && client.Connected)
{
while (true)
{
NetworkStream ns = client.GetStream();
BinaryReader sr = new BinaryReader(ns);
string msg =string.Format("【{0}】:{1}",client.Client.RemoteEndPoint.ToString(),sr.ReadString()) ;
WriteReveice(msg);
}
}
}
catch (Exception e)
{ }
}
环境:
服务器端:127.0.0.1:8899
客户端:127.0.0.1:6666
我的问题是:在ManageThread这个方法的 client.Client.RemoteEndPoint 为什么得到的是 127.0.0.1:6666,而不是127.0.0.1:8899
...全文
相关推荐
socket基础知识
socket网络基础知识,其主要是关于C#的接口哟!
TcpListener与TcpClient实战:从同步阻塞到消息边界处理
TCP通信是网络编程的基础,Socket作为底层API要求开发者理解Bind、Listen、Accept等繁杂概念,而TcpListener和TcpClient作为.NET对Socket的友好封装,大幅降低了入门门槛。本内容从同步阻塞模型讲起,剖析NetworkStream的读写原理,并重点讨论粘包与半包这一经典难题。通过引入长度前缀协议、异步处理与优雅退出机制,演示如何从一份简单Demo演进为具备生产价值的通信模块,覆盖断线重连、心跳检测等扩展方向。无论是初学者还是工程实践者,都能从中获得从原理到落地的完
SOCKET通信.doc
SOCKET通信.doc
c# 获取IP地址方法汇总
c# 获取IP地址方法汇总,总结六种获取ip地址方法
基于TCP和IP协议编程
C# .net2.0 套接字编程实例 UDP TCP通信 及实例代码


.NET Framework
