C# socket问题localhost、127.0.0.1、局域网ip可成功连接,本机实际公网ip不行

麻烦大神帮忙看看啊!!!!!!新手初学socket编程,写了服务器端和客户端测试代码。问题如题。在客户端使用本机实际ip的时候出现的错误提示:Noconnectionco... 麻烦大神帮忙看看啊!!!!!!
新手初学socket编程,写了服务器端和客户端测试代码。问题如题。在客户端使用本机实际ip 的时候出现的错误提示:No connection could be made because the target machine actively refused it

代码如下
服务器端:
TcpListener listener = new TcpListener(IPAddress.Any,port);
listener.Start();
Console.Write("start listen\n");
while(true)
{
const int buffersize = 256;
TcpClient client = listener.AcceptTcpClient();
Console.Write("connect\n");
NetworkStream clientStream = client.GetStream();
byte[] buffer = new byte[buffersize];
int readBytes = 0;
readBytes = clientStream.Read(buffer, 0, buffersize);
string request = Encoding.ASCII.GetString(buffer).Substring(0, readBytes);
Console.Write(request);
clientStream.Close();
}

客户端:
TcpClient client = new TcpClient();
IPAddress ip = IPAddress.Parse("127.0.0.1");
client.Connect(ip, 748);
NetworkStream stream = client.GetStream();
string req = "test";
byte[] requestBuffer = Encoding.ASCII.GetBytes(req);
stream.Write(requestBuffer, 0, requestBuffer.Length);

端口已打开,没有被占用,防火墙也关了。。
展开
 我来答
Ben
2015-02-17 · 知道合伙人软件行家
Ben
知道合伙人软件行家
采纳数:860 获赞数:2875
认真回答者.

向TA提问 私信TA
展开全部
连接其实是这样的。
您的Socket绑定哪个端口与IP您的客户端才能链接哪个。
所以两个必须一致即可
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
匿名用户
2015-02-16
展开全部
服务端用了路由器吧 做端口映射了吗
追问
我这个是在同一个局域网内的。并且我是在同一台电脑上测试啊。不用管路由器吧。。
追答
同一个局域网你使用公网ip就会过路由器 不信你tracert   用局域网ip就可以,公网ip就不行就是nat的毛病 在你的路由器里加上端口转发规则
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
郑凯zkm
2015-02-16 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:85
采纳率:0%
帮助的人:67.7万
展开全部
你把服务器端port改成和客户端一致试试
追问
什么意思?没懂啊?
追答
把服务器端端口直接写成748
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式