[Java] Sockety

0

Witam !

prosze o pomoc lub jakies wskazowki jak zrealizowac aplet na strone WWW laczacy sie i przesylajacy czysty tekst z serwerem napisanym w C++ (zwykle sockety tcp).

Probowalem nic nie wychodzi :(

Mam na mysli jakies proste rozwiazanie.

Pozdrawiam

0

nie ma roznicy czy on bedzie w c czy w czym innym...nie wiem czemu ci nie dziala moze np. zapomniales o "piaskownicy"(ograniczenia apletow)

0

Kiedyś pisałem sobie aplet na WWW, taki prosty, nie wiem już o co w nim chodzi
ale może coś Ci pomoże (server był w Delphi):

import java.io.*;
import java.net.*;
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class MyApl extends Applet implements KeyListener {
    TextArea tA;
    TextField tF;
    Socket sck;
    public void init() {
        tA = new TextArea();
        tF = new TextField();
        BorderLayout bL = new BorderLayout();
        tA.setEditable(false);
        tF.setForeground(Color.yellow);
        tA.setBackground(Color.white);
        tF.setBackground(Color.white);
        tF.addKeyListener(this);
        this.setLayout(bL);
        this.add(tA, bL.CENTER);
        this.add(tF, bL.SOUTH);
        try {
            sck = new Socket(getDocumentBase().getHost(), 56491);
            Thread rcvThrd = new MyThread();
            rcvThrd.start();
        }
        catch (IOException ioE) {
            tA.append(ioE.getMessage() + "\n");
        }
    }
    class MyThread extends Thread {
        public void run() {
            try {
                int buffSize;
                byte buff[] = new byte[1024];
                while (true) {
                    buffSize = sck.getInputStream().read(buff);
                    if(buffSize > 0) {
                        String str = new String(buff);
                        tA.append(str.substring(0, buffSize) + "\n");
                    }
                }
            }
            catch (IOException ioE) {
                tA.append(ioE.getMessage() + "\n");
            }
        }
    }
    public void destroy() {
        try {
            sck.close();
        }
        catch (IOException ioE) {
            tA.append(ioE.getMessage() + "\n");
        }
    }
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() == 10) {
            try {
                sck.getOutputStream().write(tF.getText().getBytes());
            }
            catch (IOException ioE) {
                tA.append(ioE.getMessage() + "\n");
            }
            tF.setText("");
        }
    }
    public void keyReleased(KeyEvent e) {
    }
    public void keyTyped(KeyEvent e) {
    }
}
0

Proste rozwiazanie, to jak przesylasz caly obiekt np. String. Wowczas komunikacja jest banalna. Ale tylko, jezeli java <-> java. Jezeli masz po drugiej stronie program w c, to lepiej jest przesylac dane jako strumien znakow - tablice (OutputStream.write lub pochodne). Po stronie C, musisz odczytac taki wlasnie strumien bajtow, ktory bedzie twoim lancuchem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0