Do not use on any
shared computer
August 30, 2008 03:21am pdt
 
[x]
Attachment Details

problem with loop message is sent continually

Hello Experts,

I need your assistance about this error:
The client doesn't let the user to send more than one messages and sends continually to the server the first message

Thanks in advance for any asssitance !
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:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
//GUI CLIENT
 
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
 
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
 
public class GUIClient extends JFrame  {
 
	private static final long serialVersionUID = -3054541431624115776L;
 
	private Socket clientSocket;
 
	static MyEnhancedBoard myBoard;
 
	public Container contentPane;
 
	//static LODServer server=null;
 
	static LODServer s;
	//int port;
	//int players;
	//static String  map;
 
	public GUIClient(LODServer s) throws UnknownHostException, IOException {
		//s= server;
 
		//	s.setup(port,players, map);
 
 
//		PrintMap(s);
 
		setTitle("Labyrinth");
		setSize(1000,1000);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
 
		//getContentPane().add(jsp);
 
 
 
		setVisible(true);	
 
 
		//Client part:
 
		String hostname = "localhost"; 
		int portNumber = 4455;
 
		clientSocket = new Socket(hostname, portNumber);
 
 
 
		System.out.println("Connection establised");
 
//		setSize(900,800); // Any size, reset it later.
 
		contentPane = getContentPane();
		contentPane.setLayout(new BorderLayout());
 
 
//		640*480:
		//myBoard = new MyEnhancedBoard("Blank.jpg",0,0,8,10,64,60);
 
 
		myBoard = new MyEnhancedBoard("Images/Blank.jpg",20,20,s.mapWidth,s.mapHeight, 40,40);
 
		//myBoard = new MyEnhancedBoard("Images/Blank.jpg",20,20,s.mapWidth,s.mapHeight, 40,40);
 
//		myBoard = new MyEnhancedBoard("Blank.jpg",20,20,s.mapWidth,s.mapHeight, 60,60);
 
 
 
 
 
		System.out.println("");
 
		myBoard.setNoOfTiles(10000); // Total number of tiles
//		setTile(int tileId, int boardCoordX,int boardCoordY,String iconName)
 
 
 
		/*
		//According to the given NUMBER OF PLAYERS CREATE THE SAME Number OF CLIENTS:
		int id=200;
		for (int i=1; i<= s.clients.size(); i++)
		{
			//new Client();
			myBoard.setTile(id++,2,2,"Images/Cool1.jpg"); 
		}
		 */
 
 
//		SG_Board smallMap.add(myBoard = new MyEnhancedBoard("Blank.jpg",10,5,s.mapWidth,s.mapHeight, 40,40));
 
 
		contentPane = getContentPane();
		contentPane.setLayout(new BorderLayout());
 
 
		JPanel smallMap = new JPanel();
 
		myBoard.add(smallMap, BorderLayout.WEST);  
 
 
		JScrollPane jsp = new JScrollPane(myBoard);
		contentPane.add("Center", jsp);
 
 
//		contentPane.add();
		JButton goUpButton = new JButton("Up");
		JButton goDownButton = new JButton("Down");
		JButton goLeftButton = new JButton("Left");
		JButton goRightButton = new JButton("Right");
 
		goUpButton.addActionListener(myBoard);
		goDownButton.addActionListener(myBoard);
		goLeftButton.addActionListener(myBoard);
		goRightButton.addActionListener(myBoard);
		contentPane.add("West",goLeftButton);
		contentPane.add("East",goRightButton);
		contentPane.add("North",goUpButton);
		contentPane.add("South", goDownButton);
 
		setVisible(true);
 
 
 
//		for (int i=1; i<= s.clients.size(); i++)
//		{
//		new Client();
 
		myBoard.setTile(1,2,2,"Images/Cool1.jpg"); 
		SG_Board.setCurrentTileID(1);
//		new Inventory();
 
 
 
 
		int idmap = 2;
		for(int a=0;a<s.mapHeight;a++)
		{
			for(int b=0;b<s.mapWidth;b++)
			{
				switch(s.map[a][b])
				{					
 
					/*tileId,x,y, ImageFile*/
 
					case LODServer.EMPTY :   myBoard.setTile(++idmap,b,a,"Images/floor.jpg"); break;
					case LODServer.HEALTH :  myBoard.setTile(++idmap,b,a,"Images/health.jpg"); break;
					case LODServer.LANTERN : myBoard.setTile(++idmap,b,a,"Images/lantern.jpg"); break;
					case LODServer.SWORD :   myBoard.setTile(++idmap,b,a,"Images/sword.jpg"); break;
					case LODServer.ARMOUR :  myBoard.setTile(++idmap,b,a,"Images/armour.jpg"); break;
					case LODServer.EXIT :    myBoard.setTile(++idmap,b,a,"Images/exit.jpg"); 
					SG_Board.INERT_TILE_ID = idmap;
					break;
					case LODServer.WALL :    myBoard.setTile(++idmap,b,a,"Images/wall.jpg"); break;
					case LODServer.TREASURE : myBoard.setTile(++idmap,b,a,"Images/gold.jpg"); break;
				}
				if(s.map[a][b] > 0)
				{
					myBoard.setTile(++idmap,b,a,"Images/floor.jpg"); break;
				}
 
			}
			repaint();
		}
//		}
		repaint();
 
 
 
 
//		menu code:
		JMenuBar menuBar = new JMenuBar();
 
		setJMenuBar(menuBar);
 
		JMenu fileMenu = new JMenu("File");
		JMenu sendCommand = new JMenu("Command");
 
		menuBar.add(fileMenu);
		menuBar.add(sendCommand);
 
		JMenuItem openAction = new JMenuItem("Load new map");
		JMenuItem exitAction = new JMenuItem("Exit");
 
		JMenuItem sendcmd = new JMenuItem("Send command");
 
 
		sendCommand.add(sendcmd);
 
		fileMenu.add(openAction);
		fileMenu.addSeparator();
		fileMenu.add(exitAction);
 
 
		openAction.setActionCommand("open");  
 
		openAction.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				//openFile();
			}});
 
 
 
 
		exitAction.setActionCommand("exit");   
 
		exitAction.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				System.exit(0);
			}});
 
 
		sendcmd.setActionCommand("sendcmd");
 
		final String sentence = "";
 
		sendcmd.addActionListener(new DialogSender());
 
 
		myBoard.resize(1000,1000);
		myBoard.show();
 
	}//end of constructor
 
 
 
	public File openFile(LODServer s) throws FileNotFoundException	{
		JFileChooser fc = new JFileChooser();
		int res = fc.showOpenDialog(this);
		if(res == JFileChooser.CANCEL_OPTION)
			return null;
 
		File file = fc.getSelectedFile();
		if(!file.exists())
			return null;
		//server.loadMap(file.getAbsolutePath());
		s.loadMap(file.getAbsolutePath());
 
		return file;
 
	}
	public static void main(String[] args) throws UnknownHostException, IOException {
		if (GUIClient.s == null) {
			new GUIClient(new LODServer());
		}
		else {
			new GUIClient(GUIClient.s); // You would be better with an empty constructor
		}
	}
 
	class DialogSender implements ActionListener {
		public void actionPerformed(ActionEvent ae) {
			PrintWriter outToServer = null; 
			try {
				outToServer = new PrintWriter(new OutputStreamWriter(
						clientSocket.getOutputStream()));
 
				String sentence = JOptionPane.showInputDialog("Send a command:");
 
 
				while ((sentence.trim()) != null){
					/* send the sentence to the server */
					outToServer.println(sentence);
				}
				outToServer.flush();
 
			} catch (IOException e) {
				e.printStackTrace();
			} finally {
				try {
					outToServer.close();
				} catch (Exception e) { /* ignore */
				}
			}
		}
 
 
	}
 
 
}
Start your free trial to view this solution
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

Question Stats
Zone: Programming
Question Asked By: perdoname_
Solution Provided By: krakatoa
Participating Experts: 1
Solution Grade: B
Views: 0
Translate:
Loading Advertisement...
 
[+][-]Expert Comment by krakatoa

Rank: Guru

Expert Comment by krakatoa:

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
[+][-]Author Comment by perdoname_
Author Comment by perdoname_:

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
[+][-]Expert Comment by krakatoa

Rank: Guru

Expert Comment by krakatoa:

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
[+][-]Author Comment by perdoname_
Author Comment by perdoname_:

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
[+][-]Accepted Solution by krakatoa

Rank: Guru

Accepted Solution by krakatoa:

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
[+][-]Author Comment by perdoname_
Author Comment by perdoname_:

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
Loading Advertisement...
Open Discussion
Open Discussion
 
Comment by krakatoa
OKay.

Naturally I will help if I can ... that's why _all_ the experts are here; I think you've had some great help from the top experts (and a bit from me), but some of them are often busy ... so hang in ...  ;)
 
 
Comment by krakatoa
And 1 tip with your other question : if the problem is the server closing the connection, then you'd better post the server code! Or is the fault in the client?

(Please don't asnwer that here, but if the problem is in the server, just post the correct code snippet in your other question, (you don't need to post again int this one, or connect the two questions).
 
 
Comment by perdoname_
Yeah i know that i had great help but correcting a piece of my code leads to other
plus to that the last week im struggling to print the parsed map from the server on the board and still shows the hard code one which is pre-defined in the LODServer class

If you can help me i'd be grateful ! cuz unfortunately it must be ready by tomorrow and it still nothing seems to work
 
 
Comment by krakatoa
OK - I've posted something in your other Q, but I have to sign off today now.
 
 
20080723-EE-VQP-34 / EE_QW_2_20070628