使用 telnet 和服务器套接字连接到您自己的 PC。每次都拒绝连接
Connecting to your own PC using telnet and Server Sockets. Get connection rejected each time
我在下面粘贴了我的全部代码,其中大部分与问题无关。我正在尝试创建一个 Java 服务器,然后使用 telnet 连接到它(在同一台 PC 上)并输出随机字符串。到目前为止,我无法摆脱每次 telnet 到我的 PC 时连接都被拒绝的情况。我在 class 时成功连接到我的大学计算机,但出于某种原因不在家。
我在下面列出了代码。是否有我应该打开的端口,或者它可能是 Windows 10 之类的问题?我对套接字真的很陌生,因此我真的不知道我在说什么。
</p>
<pre>package cm3033.lab3.ex1nonthreadedechoserver;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class MainAppEx1NonThreadedEchoServer
{
public static void main(String[] args)
{
try
{
ServerSocket s = new ServerSocket(8189) ;
// listen for a connection request on server socket s
// incoming is the connection socket
for(;;)
{
Socket incoming = s.accept() ;
// set up streams for bidirectional transfer
// across connection socket
BufferedReader in = new BufferedReader
(new InputStreamReader(incoming.getInputStream())) ;
PrintWriter out = new PrintWriter
(incoming.getOutputStream(), true /* auto flush */) ;
out.println("You are connected to " +
incoming.getLocalAddress().getHostName() +
" on port " + incoming.getLocalPort()
) ;
out.println("Type BYE to quit") ;
boolean done = false ;
while(!done)
{
String str = in.readLine() ;
if (str == null)
done = true ;
else
{
out.println("ECHO: " + str) ;
if (str.trim().equals("BYE"))
done = true ;
}
}
incoming.close() ;
}
}
catch(Exception e)
{
System.out.println(e) ;
}
}
}</code>
下图是我尝试远程登录时收到的消息。
您正在尝试在不提供端口号的情况下进行远程登录,因此默认端口号为 23。但是您已经使用端口 8189 设置了服务器。
改用telnet s-PC 8189
。
我在下面粘贴了我的全部代码,其中大部分与问题无关。我正在尝试创建一个 Java 服务器,然后使用 telnet 连接到它(在同一台 PC 上)并输出随机字符串。到目前为止,我无法摆脱每次 telnet 到我的 PC 时连接都被拒绝的情况。我在 class 时成功连接到我的大学计算机,但出于某种原因不在家。
我在下面列出了代码。是否有我应该打开的端口,或者它可能是 Windows 10 之类的问题?我对套接字真的很陌生,因此我真的不知道我在说什么。
</p>
<pre>package cm3033.lab3.ex1nonthreadedechoserver;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class MainAppEx1NonThreadedEchoServer
{
public static void main(String[] args)
{
try
{
ServerSocket s = new ServerSocket(8189) ;
// listen for a connection request on server socket s
// incoming is the connection socket
for(;;)
{
Socket incoming = s.accept() ;
// set up streams for bidirectional transfer
// across connection socket
BufferedReader in = new BufferedReader
(new InputStreamReader(incoming.getInputStream())) ;
PrintWriter out = new PrintWriter
(incoming.getOutputStream(), true /* auto flush */) ;
out.println("You are connected to " +
incoming.getLocalAddress().getHostName() +
" on port " + incoming.getLocalPort()
) ;
out.println("Type BYE to quit") ;
boolean done = false ;
while(!done)
{
String str = in.readLine() ;
if (str == null)
done = true ;
else
{
out.println("ECHO: " + str) ;
if (str.trim().equals("BYE"))
done = true ;
}
}
incoming.close() ;
}
}
catch(Exception e)
{
System.out.println(e) ;
}
}
}</code>
下图是我尝试远程登录时收到的消息。
您正在尝试在不提供端口号的情况下进行远程登录,因此默认端口号为 23。但是您已经使用端口 8189 设置了服务器。
改用telnet s-PC 8189
。