Java 在同一台计算机上运行客户端和服务器类,但没有连接?
我在笔记本电脑上使用教科书上的客户端和服务器类,但当我运行这两个程序时,它们似乎无法连接。我只需打开两个命令提示符窗口,在其中一个窗口上编译并运行服务器,然后在另一个窗口上编译客户端。我做错了什么 这是服务器代码Java 在同一台计算机上运行客户端和服务器类,但没有连接?,java,sockets,Java,Sockets,我在笔记本电脑上使用教科书上的客户端和服务器类,但当我运行这两个程序时,它们似乎无法连接。我只需打开两个命令提示符窗口,在其中一个窗口上编译并运行服务器,然后在另一个窗口上编译客户端。我做错了什么 这是服务器代码 import java.util.Date; import java.net.ServerSocket; import java.net.Socket; import java.io.DataOutputStream; import java.io.BufferedReader; im
import java.util.Date;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.DataOutputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class DateServer {
public static void main(String[] args) {
Date now = new Date();
try {
System.out.println("Waiting for a connection on port 7655.");
ServerSocket serverSock = new ServerSocket(7655);
Socket connectionSock = serverSock.accept();
BufferedReader clientInput = new BufferedReader(
new InputStreamReader(connectionSock.getInputStream()));
DataOutputStream clientOutput = new DataOutputStream(
connectionSock.getOutputStream());
System.out.println("Connection made, waiting for client " +
"to send their name.");
String clientText = clientInput.readLine();
String replyText = "Welcome, " + clientText +
", Today is " + now.toString() + "\n";
clientOutput.writeBytes(replyText);
System.out.println("Sent: " + replyText);
clientOutput.close();
clientInput.close();
connectionSock.close();
serverSock.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
以下是客户端代码:
import java.net.Socket;
import java.io.DataOutputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class DateClient {
public static void main(String[] args) {
try {
String hostname = "localhost";
int port = 7655;
System.out.println("Connecting to server on port " + port);
Socket connectionSock = new Socket(hostname, port);
BufferedReader serverInput = new BufferedReader(
new InputStreamReader(connectionSock.getInputStream()));
DataOutputStream serverOutput = new DataOutputStream(
connectionSock.getOutputStream());
System.out.println("Connection made, sending name.");
serverOutput.writeBytes("Dusty Rhodes\n");
System.out.println("Waiting for reply.");
String serverData = serverInput.readLine();
System.out.println("Received: " + serverData);
serverOutput.close();
serverInput.close();
connectionSock.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
谢谢请尝试更改端口号,然后查看。可能有其他应用正在该端口上运行。您的代码没有问题。我可以运行它。在netbeans和cmd上正常运行also@swapnil7您是否使用了两个不同的cmd屏幕?是的,我使用了两个不同的cmd屏幕您不刷新输出,即您不确保数据实际上是发送到服务器。您依赖这样一个事实,即数据将直接写入服务器,或者底层缓冲区将以某种方式刷新—在您的系统中,情况似乎并非如此。您应该检查的另一件事是,是否存在阻止连接的防火墙规则。@swapnil7我试图更改端口…但仍然没有连接。他们似乎永远在奔跑。有什么想法吗?我试过换端口…但还是没有连接。他们似乎永远在奔跑。有什么想法吗?你有什么异常吗?你应该运行客户端程序,而不仅仅是编译。@user2910237没有异常。只是没有回应。swapnil7认为它是我的防火墙。当我第一次尝试运行你的程序时,防火墙被阻止并请求访问。