我写了一个与TcpListener和TcpClients通信的程序。程序可以是接收者或发送者。接收者使用TcpListener&tcpClient的顺序与发送者的顺序类似。
在我编写代码的Windows 10机器上,代码工作正常,但在Windows 7机器上,代码不起作用。
我从发件人那里收到以下错误:无法建立连接,因为目标机器主动拒绝它127.0.0.1:8000。
那么这个问题的原因是什么?是否与计算机的速度有关,因为W10机器有i7而W7有较旧的i5?
这是发件人代码:
private final static int BUFFER_SIZE = 1024;
public static void writeXML(JCoFunction jcoFunction, String path) {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(new File("C:/XMLFile.xml")));
bos = new BufferedOutputStream(new FileOutputStream(path));
byte[] buf = new byte[BUFFER_SIZE];
int len = 0;
while((len = bis.read(buf)) >= 0) {
bos.write(buf, 0, len);
}
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
} finally {
try {
if(bis != null) bis.close();
if(bos != null) bos.close();
} catch (Exception e) {}
}
}
答案 0 :(得分:0)
*编辑刚刚注意到您在TIMED_WAIT上方的评论表明正在使用该端口。
它将是: A,Windows防火墙,转到防御者并关闭它以测试它是否有效,如果可以的话,你可以添加一个例外并重新打开它。 B,端口正在使用中。
快速搜索显示使用:
curl 'https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXX123456789/Calls.json' -X POST \
--data-urlencode 'To=+1562300000' \
--data-urlencode 'From=+18180000000' \
--data-urlencode 'MachineDetection=Enable' \
--data-urlencode 'Url=https://handler.twilio.com/twiml/EH8ccdbd7f0b8fe34357da8ce87ebe5a16' \
-u ACXXXXXXXXXXXXXXXX123456789:[AuthToken]
将在localhost上使用防火墙(Atleast用于测试目的),您正在打开您的计算机,因此可以理解您必须明确告诉您的防火墙您想要打开您的网络!
答案 1 :(得分:0)
端口8000很可能被另一个程序使用。特别是如果它在一台计算机上工作但主动拒绝另一台计算机(一台计算机可能安装了另一台计算机没有安装的程序)。尝试另一个端口(例如25568)
答案 2 :(得分:0)
我对C#一无所知,但我怀疑它与您的计算机硬件有关。 我会检查以下两件事:
您的Windows 7计算机上是否已运行任何程序并侦听端口8000?可以是网络服务器,游戏,任何第三方软件。或者甚至已经运行的程序的旧版本。尝试重新启动计算机并再次检查。
Windows机器上是否运行了防火墙?可能是Windows防火墙或防病毒程序安装的防火墙。