Задать вопрос
@5artm

Не подключается с другого компьютера к серверу, что делать?

Есть вот такой клиент:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
 
public class Client {
    static JTextArea messages;
    static JTextField NewMessage;
    static BufferedReader reader;
    static PrintWriter writer;
    static Socket sock;
 
    public static void main(String[] args) {
        Client client = new Client();
        JFrame f = new JFrame();
        f.setTitle("ChatMessenger");
        JPanel p = new JPanel();
        messages = new JTextArea(15, 30);
        messages.setLineWrap(true);
        messages.setWrapStyleWord(true);
        messages.setEditable(false);
        JScrollPane qscroller = new JScrollPane(messages);
        qscroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        qscroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        NewMessage = new JTextField(20);
        JButton sendButton = new JButton("Отправить");
        sendButton.setBackground(Color.lightGray);
        sendButton.addActionListener(new SendButtonListener());
        p.add(qscroller);
        p.add(NewMessage);
        p.add(sendButton);
        setUpNetworking();
 
        Thread readerThread = new Thread(new IncomingReader());
        readerThread.start();
 
        f.getContentPane().add(BorderLayout.CENTER, p);
        f.setSize(400, 500);
        f.setVisible(true);
    }
 
 
 
    private static void setUpNetworking() {
        try {
            sock = new Socket("192.168.100.12", 50693);
            InputStreamReader streamReader = new InputStreamReader(sock.getInputStream());
            reader = new BufferedReader(streamReader);
            writer = new PrintWriter(sock.getOutputStream());
            System.out.println("Подключение установлено!");
        } catch (Exception e) {
            System.out.println(e);
        }
    }
 
 
    static class SendButtonListener implements ActionListener {
 
        public void actionPerformed(ActionEvent e) {
            try {
                writer.println(NewMessage.getText());
                writer.flush();
            } catch (Exception ex) {
                System.out.println(ex);
            }
            NewMessage.setText("");
            NewMessage.requestFocus();
        }
    }
 
 
    static class IncomingReader implements Runnable {
        public void run() {
            String message;
            try {
            while((message = reader.readLine() ) != null){
                messages.append(message + "\n");
            }
            } catch (Exception ex) {
                System.out.println(ex);
            }
        }
 
    }
}

И вот такой сервер:
package chatmessenger;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
 
public class Server implements Runnable{
    static Socket client;
    static BufferedReader reader;
    static ServerSocket server;
    static ArrayList <PrintWriter> OutputStreams;
    public static void main(String[]args) throws IOException  {
        OutputStreams = new ArrayList() ;
        server = new ServerSocket(50693);
        System.out.println("Запущен сервер!");
        while(true){
                client = server.accept();
            InputStreamReader isr = new InputStreamReader(client.getInputStream());
            reader = new BufferedReader(isr);
            PrintWriter sender = new PrintWriter(client.getOutputStream());
           OutputStreams.add(sender);
            Thread t = new Thread(new Server());
            t.start();
            System.out.println("Подключился клиент!");
            send("Chat : Kto-to zashel! (Russkiy poka chto ne podderzhivaetsa))) )");
        }
    }
    static String message;;
    public void run() {
        try{
            
        while((message = reader.readLine()) != null){
        System.out.println(message);
        send(message);
        }
            
        }catch(Exception e){
            System.out.println(e);
        }
        
        
    }
   static public void send(String message){
        for(PrintWriter sender : OutputStreams ){
        sender.println(message);
        sender.flush();
        }
    }
}


В двух разных компиляторах на одном компьютере работает, но когда я на этом же компьютере запускаю сервер, а на другом клиент, то клиент выдает ошибку
java.net.ConnectException: Connection refused: connect
java.lang.NullPointerException

Он, как я понял, не видит сервер. Что делать?
  • Вопрос задан
  • 59 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Я бы для начала проверил настройки firewall и открыл бы на сервере порт 50693, выключил бы антивирус (если это уиндоуз)...
Также хорошо бы посмотреть, куда привязался SocketServer.
В линуксе можно посмотреть командой netstat -an | grep 50693, в виндовсе наверное тоже что-то подобное есть...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы