Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在同一台计算机上运行客户端和服务器类,但没有连接?_Java_Sockets - Fatal编程技术网

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认为它是我的防火墙。当我第一次尝试运行你的程序时,防火墙被阻止并请求访问。