Форум программистов, компьютерный форум, киберфорум
Java: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
6 / 6 / 1
Регистрация: 15.09.2013
Сообщений: 149
1

Настройка клиента - сервера

19.11.2013, 18:00. Показов 964. Ответов 3
Метки нет (Все метки)

Приветствую форумчане,помогите,пожалуйста,решить проблемку..
Имеется сервер:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
 
public class Server {
 
    static ServerSocket serverSocket;
    static Socket socket;
    static DataOutputStream out;
    static DataInputStream in;
    static Users[] user = new Users[10];
 
    public static void main(String[] args) {
        try {
            System.out.println("Server Started...");
            serverSocket = new ServerSocket(7778);
            System.out.println("Server Start.");
            while (true) {
                socket = serverSocket.accept();
                for (int i = 0; i < 10; i++) {
                    if (user[i] == null) {
                        System.out.println("Conection from"
                                + socket.getInetAddress());
                        out = new DataOutputStream(socket.getOutputStream());
                        in = new DataInputStream(socket.getInputStream());
 
                        user[i] = new Users(out, in, user, i);
                        Thread thread = new Thread(user[i]);
                        thread.start();
                        break;
                    }
                }
            }
 
        } catch (IOException e) {
 
        }
    }
}
 
class Users implements Runnable {
 
    DataOutputStream out;
    DataInputStream in;
    Users[] user = new Users[10];
    String name;
    int playerid;
    int playeridln;
    int xin;
    int yin;
 
    public Users(DataOutputStream out, DataInputStream in, Users[] user, int pid) {
        this.out = out;
        this.in = in;
        this.user = user;
        this.playerid = pid;
    }
 
    public void run() {
        try {
            out.writeInt(playerid);
        } catch (IOException e1) {
            System.out.println("Failed to send PlayerID");
        }
        while (true) {
            try {
                playeridln = in.readInt();
                xin = in.readInt();
                yin = in.readInt();
 
                for (int i = 0; i < 10; i++) {
                    if (user[i] != null) {
                        user[i].out.writeInt(playeridln);
                        user[i].out.writeInt(xin);
                        user[i].out.writeInt(yin);
                    }
                }
            } catch (IOException e) {
                user[playerid] = null;
                break;
            }
        }
 
    }
}
И имеется клиент:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class Client extends JPanel implements Runnable, KeyListener {
 
    private static final long serialVersionUID = 1L;
    static Socket socket;
    static DataInputStream in;
    static DataOutputStream out;
 
    int playerid;
 
    int[] x = new int[10];
    int[] y = new int[10];
 
    boolean left, up, right, down;
 
    int playerx;
    int playery;
 
    public void init() {
        try {
            System.out.println("Conecting to serever...");
            socket = new Socket("localhost", 7778);
            System.out.println("Connection successful");
            in = new DataInputStream(socket.getInputStream());
            playerid = in.readInt();
            out = new DataOutputStream(socket.getOutputStream());
            Input input = new Input(in, this);
            Thread thread = new Thread(input);
            thread.start();
            Thread thread2 = new Thread(this);
            thread2.start();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    public void updateCoordinates(int pid, int x2, int y2) {
        this.x[pid] = x2;
        this.y[pid] = y2;
    }
 
    public void paint(Graphics g) {
        repaint();
        for (int i = 0; i < 10; i++) {
            g.drawOval(x[i], y[i], 5, 5);
        }
    }
 
    public void run() {
        while (true) {
            if (right) {
                playerx += 10;
            }
            if (left) {
                playerx -= 10;
            }
            if (down) {
                playery += 10;
            }
            if (up) {
                playery -= 10;
            }
            if (right || left || up || down) {
                try {
                    out.writeInt(playerid);
                    out.writeInt(playerx);
                    out.writeInt(playery);
                } catch (Exception e) {
                    System.out.println("Erro Coordinates");
                }
            }
            repaint();
            try {
                Thread.sleep(400);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
 
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == 37) {
            left = true;
        }
        if (e.getKeyCode() == 38) {
            up = true;
        }
        if (e.getKeyCode() == 39) {
            right = true;
        }
        if (e.getKeyCode() == 40) {
            down = true;
        }
    }
 
    public void keyReleased(KeyEvent e) {
        if (e.getKeyCode() == 37) {
            left = false;
        }
        if (e.getKeyCode() == 38) {
            up = false;
        }
        if (e.getKeyCode() == 39) {
            right = false;
        }
        if (e.getKeyCode() == 40) {
            down = false;
        }
    }
 
    public void keyTyped(KeyEvent e) {
    }
 
    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setSize(300, 300);
        f.getContentPane().add(new Client());
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
 
class Input implements Runnable {
 
    DataInputStream in;
    Client client;
 
    public Input(DataInputStream in, Client c) {
        this.in = in;
        this.client = c;
    }
 
    public void run() {
        while (true) {
            try {
                int playerd = in.readInt();
                int x = in.readInt();
                int y = in.readInt();
                client.updateCoordinates(playerd, x, y);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
 
}
Почему же этот кружочек не двигается?)) код взят из интернетов, добавил только это:
Java
1
2
3
4
5
6
7
public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setSize(300, 300);
        f.getContentPane().add(new Client());
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
Раньше был апплет,наверно все из за этого.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2013, 18:00
Ответы с готовыми решениями:

Синхронизация клиента и сервера
1. Сервер генерирует число double. Например 3.25. 2. Сервер посылает клиенту сообщение о старте....

Разработка клиента и сервера своего vpn на java
Добрый день. Уважаемые форумчани. Ищу людей, которые разрабатывали клиент и сервер простого vpn...

Как правильно разделить работу сервера и клиента
Доброго времени суток! Подскажите вот по какой теме. Хочу сделать простейшую сетевую игру. И...

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

3
Java, C# - Expert
69 / 69 / 12
Регистрация: 09.08.2011
Сообщений: 284
19.11.2013, 18:25 2
У Вас просто не используется метод init();

добавьте банальный конструктор

Java
1
2
3
    public Client() {
        init();
    }
1
6 / 6 / 1
Регистрация: 15.09.2013
Сообщений: 149
20.11.2013, 14:28  [ТС] 3
Что то не работает...

Добавлено через 18 часов 6 минут
Может именно ввод не работает?
0
6 / 6 / 1
Регистрация: 15.09.2013
Сообщений: 149
21.11.2013, 17:33  [ТС] 4
Вообще задача была банальна,сделать в фрейме много шариков и заставить их двигаться(то есть каждый шарик это отдельное окно,клиенты вообщем))
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import java.awt.Graphics;
import java.io.IOException;
 
import javax.swing.JComponent;
import javax.swing.JFrame;
 
public class Game extends JComponent {
    private static final long serialVersionUID = 1L;
    private static final String NAME = "Title";
    private int offsetX;
    private int offsetY;
    private Input input = new Input(this);
 
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        repaint();
        move(g);
        g.setColor(Color.BLACK);
        g.fillRect(0, 0, getWidth(), getHeight());
                g.setColor(Color.RED);
                g.fillOval(100 - offsetX, 100 + offsetY, 32, 32);
        
    }
 
    private void move(Graphics g) {
        if (input.down) {  offsetY++;
        }
        if (input.up) {   offsetY--;
        }
        if (input.left) {   offsetX--;
        }
        if (input.right) {   offsetX++;
        }
    }
 
    public static void main(String[] args) {
        // Dimension tl = Toolkit.getDefaultToolkit().getScreenSize();
        // int cw = (int) tl.getWidth();
        // int ch = (int) tl.getHeight();
        JFrame frame = new JFrame(NAME);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // frame.setSize(cw, ch);
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        frame.add(new Game());
        frame.setVisible(true);
        frame.setLocationRelativeTo(null);
        frame.setResizable(true);
        frame.addMouseListener(mos);
        frame.addMouseMotionListener(mos);
 
    }
 
}
То есть при создании много вот таких вот окошек,было бы много шариков на карте,которыми можно было бы управлять))
У кого есть какие идеи?)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2013, 17:33

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Триколор, настройка сервера и клиента
Ребят, изначально понятно, что для сервера для более качественного приема необходимо подавать два...

Клиента Сервера
Всем привет. В общем я с другом создаю проект, в котором друг пишет сайт на php, а я создаю клиент...

Ошибки сервера и клиента
Здравствуйте. У меня ситуация такая. Есть сервис развернутый на ASP.NET, есть клиент, написанный...

Связь сервера и клиента
Всем привет. Вопрос не из жизни, а из обучения. У меня есть прилага - несколько jar файлов(8). В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.