Исключение в серверной и клиентской программе helloworld при программировании сокетов.

Я получаю эту ошибку, когда запускаю свою клиентскую программу. Мне пока не удалось распознать проблему. Я изменил номера портов, но это бесполезно. Я видел предыдущие сообщения об этой же ошибке, но не понял.

Server.java

import java.io.*;
import java.net.*;
class Server{

 public static void main(String argv[]) throws Exception 
 {

   String clientSentence;
   String capitalizedSentence;
   ServerSocket welcomeSocket = new ServerSocket(8080);

   while (true) 
   {
      Socket connectionSocket = welcomeSocket.accept();
       BufferedReader inFromClient = new BufferedReader(new 
      InputStreamReader(connectionSocket.getInputStream()));
       DataOutputStream outToClient = new 
       DataOutputStream(connectionSocket.getOutputStream());
       clientSentence = inFromClient.readLine();
        System.out.println("Received: " + clientSentence);
        capitalizedSentence = clientSentence.toUpperCase() + '\n';
         outToClient.writeBytes(capitalizedSentence);
     }
  }
  }

Client.java

import java.io.*;
import java.net.*;

class Client
{
 public static void main(String argv[]) throws Exception 
 {
      String sentence;
      String modifiedSentence;
      BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
      Socket clientSocket = new Socket("localhost", 8080);    
      DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
      BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
      sentence = inFromUser.readLine();
      outToServer.writeBytes(sentence + '\n');
      modifiedSentence = inFromServer.readLine();
      System.out.println("FROM SERVER: " + modifiedSentence);
      clientSocket.close();
 }
 }

Я получаю сообщение об ошибке при запуске client.java

Exception in thread "main" java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at Client.main(Client.java:11)

Может ли кто-нибудь помочь с этой ошибкой?

Когда это вопрос, вы используете вопросительный знак, а не три восклицательных знака.

L_Church 11.04.2018 13:52

Вы открываете оба сокета на одном и том же порте.

yassadi 11.04.2018 13:52

Да, я использовал тот же порт.

Max 11.04.2018 13:55

Используйте порт, отличный от 8080.

Enzokie 11.04.2018 14:00

Я предполагаю, что сервер запускается раньше клиента, верно?

Rainer 11.04.2018 14:02

Я первым запустил сервер. @ Rainer

Max 11.04.2018 14:04

Я проверил и другие порты, но повторяется одно и то же исключение. @Enzokie

Max 11.04.2018 14:05

Иногда это не работает при запущенном антивирусном брандмауэре.

Enzokie 11.04.2018 14:30
0
8
47
1

Ответы 1

Клиентская и серверная программа у меня работает отлично.

  1. Можете ли вы проверить, прослушивает ли этот порт какой-то процесс?

Собирался сказать то же самое. Копирование и прошлое -> Работает нормально. В Windows вы можете использовать инструмент командной строки netstat, чтобы проверить, используется ли порт. С "-b" он даже скажет вам, какое приложение (требует прав администратора)

Rainer 11.04.2018 14:01

Нет я проверил

Max 11.04.2018 14:01

Я получаю "Запрошенная операция требует повышения". когда я использую <netstat -b> @Rainer

Max 11.04.2018 14:03

Можете ли вы еще раз проверить, действительно ли ваша серверная программа запущена. Я думаю, что в вашем случае серверная программа даже не запускается. Когда я завершил свою серверную программу, а затем запустил клиент, у меня был тот же стек, что и у вас.

piy26 11.04.2018 14:06

Когда я запускаю свою серверную программу, она все еще работает ... @ piy26

Max 11.04.2018 14:08

@Princess: Я написал "требуются права администратора" ... запустите cmd с правами администратора ("Запуск от имени администратора"), и он будет работать

Rainer 11.04.2018 14:32

Это сработало! но ни один процесс не прослушивает тот же номер порта. @Rainer

Max 12.04.2018 06:26

Может быть ошибка проводных хостов. вы пробовали 127.0.0.1 вместо localhost?

Rainer 13.04.2018 17:25

Другие вопросы по теме