Java-Gaming.org    
Featured games (79)
games approved by the League of Dukes
Games in Showcase (476)
Games in Android Showcase (106)
games submitted by our members
Games in WIP (533)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Sockets and threads [Solved]  (Read 678 times)
0 Members and 1 Guest are viewing this topic.
Offline Ghork

Senior Newbie


Medals: 1



« Posted 2013-10-12 12:48:03 »

Hello, I spent a major portion of yesterday trying to figure things out and didn't get far, so I've come to ask for help.

So, I want to make a game where the gameplay is very similar to tetris with multiplayer over a network.
Though I'm confused on how to get data transferred between the classes for the actual game and a class for handling the connection, which extends Thread.

Is there any good guide on this? Or could someone give me a few pointers?

I followed a guide from 1997 and got to this:
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  
import java.io.*;
import java.net.Socket;

public class SocketAction extends Thread {

    private DataInputStream inStream;
    protected DataOutputStream outStream;
    private Socket sock;

    public SocketAction(Socket sock) {
        super("SocketAction");


        try {
            inStream = new DataInputStream(new
                    BufferedInputStream(sock.getInputStream(), 1024));
            outStream = new DataOutputStream(new
                    BufferedOutputStream(sock.getOutputStream(), 1024));
            this.sock = sock;
        }
        catch (IOException e) {
            System.out.println("Failed to initialize SocketAction: " + e);
            System.exit(1); //Replacing this later
       }
    }

    public void send(String s) {
        try {
            outStream.writeUTF(s);
        } catch (IOException e) {
            System.out.println("Failed to write to outStream: " + e);
        }
    }
    public String receive() {
        try {
            return inStream.readUTF();
        } catch (IOException e) {
            System.out.println("Failed to read from inStream: " + e);
        }
        return "";
    }

    public boolean isConnected() {
        return ((inStream != null) && (outStream != null) && (sock != null));
    }

    public void closeConnections() {
        try {
            sock.close();
            sock = null;
        }
        catch (IOException e) {
            System.out.println("Failed to close socket: " + e);
        }
    }

    protected void finalize () {
        if (sock != null) {
            try {
                sock.close();
            }
            catch (IOException e) {
                System.out.println("Failed to close socket: "+ e);
            }
            sock = null;
        }
    }
}

Note that I had to do certain things different from the guide due to deprecated methods, so I'm not even sure in what portion this works.
Do you think this class will work for me? Is there any way you think I should improve it?
Offline opiop65

JGO Kernel


Medals: 153
Projects: 7
Exp: 3 years


JumpButton Studios


« Reply #1 - Posted 2013-10-12 13:17:35 »

You're using TCP because you're not using a DatagramSocket. A socket(like you're using) is TCP based.

Offline Ghork

Senior Newbie


Medals: 1



« Reply #2 - Posted 2013-10-12 13:45:50 »

You're using TCP because you're not using a DatagramSocket. A socket(like you're using) is TCP based.
Alright, thanks.

I modified the main post to state the remaining issue.
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Danny02
« Reply #3 - Posted 2013-10-12 14:19:48 »

Btw, one shouldn't use Sockets anymore nowadays. It is just reinventing the wheel in a very hard erroneous way.
Give Netty a try and be supprised.
Offline Ghork

Senior Newbie


Medals: 1



« Reply #4 - Posted 2013-10-12 15:16:21 »

Btw, one shouldn't use Sockets anymore nowadays. It is just reinventing the wheel in a very hard erroneous way.
Give Netty a try and be supprised.

I don't know how I feel about that. I usually just go for what's directly available and I think I'll stick to that.


Edit: Friend helped me out, problems solved.
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

pw (22 views)
2014-07-24 01:59:36

Riven (20 views)
2014-07-23 21:16:32

Riven (17 views)
2014-07-23 21:07:15

Riven (20 views)
2014-07-23 20:56:16

ctomni231 (48 views)
2014-07-18 06:55:21

Zero Volt (44 views)
2014-07-17 23:47:54

danieldean (35 views)
2014-07-17 23:41:23

MustardPeter (38 views)
2014-07-16 23:30:00

Cero (53 views)
2014-07-16 00:42:17

Riven (52 views)
2014-07-14 18:02:53
HotSpot Options
by dleskov
2014-07-08 03:59:08

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:58:24

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:47:22

How do I start Java Game Development?
by ra4king
2014-05-17 11:13:37

HotSpot Options
by Roquen
2014-05-15 09:59:54

HotSpot Options
by Roquen
2014-05-06 15:03:10

Escape Analysis
by Roquen
2014-04-29 22:16:43

Experimental Toys
by Roquen
2014-04-28 13:24:22
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!