А с какой ошибкой ваша команда не выполняется? Может, там javac нужно запустить. Или доступа к портам нет.
Вообще, я не понимаю, откуда у кучи народа (не только у вас) возникают проблемы с сокет-серверами. Если разбираться в технологии и все делать строго по спеке, никаких проблем нет.
Код:
import java.io.*;
import java.net.*;
public class SS {
private static final String POLICY_FILE_RESPONCE =
"<cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"*\"/></cross-domain-policy>";
public static void main(String [] args) throws Exception {
final ServerSocket ss = new ServerSocket(3128);
while (true) {
final Socket s = ss.accept();
new Thread(new Runnable() {
@Override
public void run() {
handles(s);
}
}).start();
}
}
static void handles(Socket s) {
System.out.println("Client!");
try {
final InputStream is = new BufferedInputStream(s.getInputStream());
final OutputStream os = s.getOutputStream();
boolean first = true;
boolean die = false;
do {
final ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int readed;
while ((readed = is.read()) > 0) {
buffer.write(readed);
}
final byte[] bytes = buffer.toByteArray();
final String dummyContent = new String(bytes, "UTF-8");
System.out.println(dummyContent);
if ("<policy-file-request/>".equals(dummyContent) && first) {
os.write(POLICY_FILE_RESPONCE.getBytes("UTF-8"));
os.write(0);
die = true;
}
first = false;
if (readed == -1)
die = true;
if ("<quit/>".equals(dummyContent)) {
die = true;
}
os.write(bytes);
os.write(0);
} while (!die);
s.shutdownOutput();
s.close();
System.out.println("Good buy, cruel world!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Код AS3:
package {
import flash.display.*;
import flash.text.*;
import flash.geom.*;
import flash.net.*;
import flash.events.*;
import flash.system.*;
public class Test extends Sprite {
const tf : TextField = new TextField();
var sock : XMLSocket;
public function Test() {
Security.loadPolicyFile("xmlsocket://127.0.0.1:3128");
sock = new XMLSocket("127.0.0.1", 3128);
sock.addEventListener(Event.CONNECT, connected);
sock.addEventListener(DataEvent.DATA, receive);
addChild(tf);
}
private function connected(e : Event) : void {
tf.text = "COnnected";
sock.send(<test/>);
}
private function receive(e : DataEvent) : void {
tf.text = e.data.toString();
sock.send(<quit/>);
}
}
}
Вот. Рабочее. Проверялось. Импорты в as от другого теста остались. Импорты со * потому, что писалось все в vim'е а не в IDE. Если и оно у вас не заработает, по шагам пишите, что именно вы делали и какие ошибки на каких шагах выдавались.
Обработка исключений не совсем правильная (для примера - пойдет, в production close нужно в finally делать). Запись в два приема (нулевой байт отдельно) тоже может быть не очень для production (учитывая, что у вас вообще не работает - без разницы).