如何在同一台电脑上调试TCP连接?

我写了一个服务器端程序A.exe,用一个TCPListener监听了本机的2185端口。
具体的语句是: TcpListener listener = new TcpListener(IPAddress.Any,2185);
我在另一个客户端程序B.exe中,用TcpClient尝试连接服务器。
具体的语句是:TcpClient.Connect(IPAddress.Parse(服务器IP), 2185);
如果在两台不同的电脑上可以连接,但如果在同一台电脑上,将服务器IP改为127.0.0.1就出错了。
错误信息是“通常每个套接字地址(协议/网络地址/端口)只允许使用一次”。
我猜测应该是2185端口被占用引起的冲突错误,但应该怎么解决呢?
因为客户端程序也需要在服务器上正常运行的啊……
求前辈们指点!谢谢。

第1个回答  推荐于2017-12-16
在服务端设置端口复用的选项,如:
setsockopt(s,SOL_SOCKET,SO_REUSEADDR,(char *)val,sizeof(val);

有问题请继续追问。追问

你好,我按照自己的理解改为这样,仍然会出同样的错误信息:
TC = new TcpClient();
TC.Client.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.ReuseAddress, true);
然后 TC.Client.Connect 地址。
VS2005环境。字数受限,贴不全了。

追答

后续如果有编程上的问题,可以直接点击我的名字进入我的主页,选择向我提问。
有问必答,谢谢!

本回答被提问者采纳
第2个回答  2013-09-24
不可以同时两个程序监听,你的B程序有错误,只是简单的修改了A程序的内容就拿来监听,其实还是A程序在监听,你要改A程序的监听目标,不能都是2185端口。
第3个回答  2013-09-25
你说“将服务器IP改为127.0.0.1就出错了”。你试试把127.0.0.1改为电脑实际设置的IP试试。如192.168.1.20这样的,当然你事先要设置好本机IP
第4个回答  2013-09-25
服务器端用127.0.0.1 客户端用你的ip地址
第5个回答  2015-08-26
安装虚拟机
相似回答