Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Сервер для нескольких клиентов. / 11 сообщений из 11, страница 1 из 1
07.05.2013, 17:33:12
    #38250719
wtf123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер для нескольких клиентов.
Здравствуйте, делал сервер , который бы мог принимать сразу несколько клиентов. Не получается, помогите плс :(
Код: 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.
import java.awt.FlowLayout;
import javax.swing.BoxLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintWriter;
import java.net.*;
import java.util.Date;
import java.util.Scanner;

import javax.swing.*;


public class NetServerThread implements ActionListener{
	public static void main(String args[]){
		new NetServerThread();
	}
	PrintWriter pw;
	Scanner sc;

	JTextArea ta=new JTextArea(20,20);
	JButton knopka=new JButton("Send");
	JTextField eng=new JTextField(10);
	JLabel inp= new JLabel("Message:");
	NetServerThread(){
		JFrame fr=new JFrame();
		inp.setBounds(20,320,100,20);
		eng.setBounds(20,350,250,50);
		ta.setBounds(20,20,350,275);
		knopka.setBounds(275,350,100,35);
		knopka.addActionListener(this);
		eng.addActionListener(this);
		fr.add(ta);
		fr.add(eng);
		fr.add(knopka);
		fr.add(inp);
		fr.setLayout(null);
		
		fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		fr.setSize(450,450);
		fr.setVisible(true);
		try{
			ServerSocket ss=new ServerSocket(3333);
			Socket x=ss.accept();
			pw=new PrintWriter(x.getOutputStream(),true);
			sc = new Scanner(x.getInputStream());
			In in=new In();
			in.start();
			Out out=new Out();
			out.start();
		}catch(Exception e){e.printStackTrace();}
	}
	class In extends Thread{
		public void run(){
			while (true){
				String a=sc.nextLine();
				System.out.println("client"+a);
				ta.append("Client: "+a+"\n"+(new Date()).toString());
			}
		}
	}
	class Out extends Thread{
		public void run(){
			Scanner osc=new Scanner(System.in);
			while (true){
				String a=osc.nextLine();
				pw.println(a);
			}
		}
	}

	public void actionPerformed(ActionEvent arg0) {
		String message = eng.getText();
		eng.setText("");
		pw.println(message);
		Date dt=new Date();
		ta.append("Me: "+message+"\n"+dt.toString()+"\n");
	}
}
...
Рейтинг: 0 / 0
07.05.2013, 17:36:44
    #38250723
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер для нескольких клиентов.
Вот тут куча примеров
https://www.google.com/search?q=Java simple socket server

Зачем серверу GUI?

Почему сервер и клиент - одно приложение?

Нужно понимать многопоточность в Swing. Нельзя из каких попало потоков менять состояние GUI напрямую.
http://docs.oracle.com/javase/tutorial/uiswing/concurrency/
...
Рейтинг: 0 / 0
07.05.2013, 17:40:58
    #38250729
wtf123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер для нескольких клиентов.
Blazkowicz, Делалось что-то типо Чата. Все работает. Но только с одним клиентом. Надо сделать с Thread. Но у меня не получается.
...
Рейтинг: 0 / 0
07.05.2013, 17:44:53
    #38250734
wtf123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер для нескольких клиентов.
Blazkowicz, Извиняюсь за даблпост. Сервер и клиент не одно приложение. Это Код сервера.
...
Рейтинг: 0 / 0
07.05.2013, 17:48:15
    #38250744
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер для нескольких клиентов.
wtf123Blazkowicz, Делалось что-то типо Чата. Все работает. Но только с одним клиентом. Надо сделать с Thread. Но у меня не получается.
Что именно не получается нам предстоит угадать? Или предлагается запустить этот код, написать для него клиента и увидеть самим?
...
Рейтинг: 0 / 0
07.05.2013, 17:58:29
    #38250760
wtf123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер для нескольких клиентов.
Blazkowicz, я же сверху написал: " Здравствуйте, делал сервер , который бы мог принимать сразу несколько клиентов. Не получается!" и "Все работает. Но только с одним клиентом. Надо сделать с Thread. Но у меня не получается. " Ну если это не понятно , то -> Надо сделать из сервера ,который может принимать только одно соединение с клиентом , Сервер который бы смог принимать несколько клиентов. А именно : Сервер - чатом, в который смогли бы коннектиться несколько клиентов одновременно . Сейчас работает только с одним клиентом.
...
Рейтинг: 0 / 0
07.05.2013, 18:26:10
    #38250800
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер для нескольких клиентов.
...
Рейтинг: 0 / 0
07.05.2013, 18:33:25
    #38250813
wtf123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер для нескольких клиентов.
Usman,Это немножко не то ^^
...
Рейтинг: 0 / 0
07.05.2013, 19:25:17
    #38250861
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер для нескольких клиентов.
wtf123А именно : Сервер - чатом, в который смогли бы коннектиться несколько клиентов одновременно . Сейчас работает только с одним клиентом.
С одном работает, с двумя не работает. Куда уж яснее. Просто не работает. Ни ошибок. Ничего. Даже не известно запускается или нет. Просто не работает и всё. К чему эти наводящие вопросы.

Где код клиента?
Второй клиент не запускается?
Второй клиент запускается и зависает?
Второй клиент запускается, работает, но выдаёт ошибку.
Второй клиент запускается, работает, отправляет, но сервер не показывает?
А так всё понятно. Удачи!
...
Рейтинг: 0 / 0
07.05.2013, 20:15:04
    #38250897
wtf123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер для нескольких клиентов.
Blazkowicz, Сервер принимает только одного, т.е При подключении второго он его игнорит и принимает сообщения от первого клиента .Зачем код клиента , если клиенту все равно сколько клиентов подключено. но все же :
Код: 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.
import java.awt.FlowLayout;
import javax.swing.BoxLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintWriter;
import java.net.*;
import java.util.Date;
import java.util.Scanner;

import javax.swing.*;


public class NetClientThread implements ActionListener{
	public static void main(String args[]){
		new NetClientThread();
	}
	PrintWriter pw;
	Scanner sc;
	JTextArea ta=new JTextArea(20,20);
	JButton knopka=new JButton("Send");
	JTextField eng=new JTextField(10);
	JLabel inp= new JLabel("Message:");
	
		
	NetClientThread(){
			JFrame fr=new JFrame();
		inp.setBounds(20,320,100,20);
		eng.setBounds(20,350,250,50);
		ta.setBounds(20,20,350,275);
		knopka.setBounds(275,350,100,35);
		knopka.addActionListener(this);
		eng.addActionListener(this);
		fr.add(ta);
		fr.add(eng);
		fr.add(knopka);
		fr.add(inp);
		fr.setLayout(null);
		
		fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		fr.setSize(450,450);
		fr.setVisible(true);
		try{
			Socket x=new Socket("localhost",3333);
			pw=new PrintWriter(x.getOutputStream(),true);
			sc = new Scanner(x.getInputStream());
			In in=new In();
			in.start();
			Out out=new Out();
			out.start();
		}catch(Exception e){e.printStackTrace();}
	}
	class In extends Thread{
		public void run(){
			while (true){
				String a=sc.nextLine();
				System.out.println("server"+a);
					ta.append("Server: "+a+"\n"+(new Date()).toString()+"\n");
			}
		}
	}
	class Out extends Thread{
		public void run(){
			Scanner osc=new Scanner(System.in);
			pw.println("Connected");
			while (true){
				String a=osc.nextLine();
				pw.println(a);
			}
		}
	}
	public void actionPerformed(ActionEvent arg0) {
		String message = eng.getText();
		eng.setText("");
		pw.println(message);
		Date dt=new Date();
		ta.append("Me: "+message+"\n"+dt.toString()+"\n");
	}
}
...
Рейтинг: 0 / 0
07.05.2013, 21:18:59
    #38250948
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер для нескольких клиентов.
установи 7 tomcat - там есть пример чата на websockets
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Сервер для нескольких клиентов. / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]