![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2012
Сообщений: 30
|
Снова переписал все заново. Прописал 843 порт. Как и раньше, эффект нолевой! Что делать дальше?
Добавлено через 4 часа 17 минут Алло-о-о! Есть кто-то из супер спецов на этом форуме? На протяжение шести часов, еще раз, прочитал кучу статей, а эту почти выучили на из уч, просмотрел десяток видео, Перепробовал все ваши советы - результата 0! Может проблема в сервере? Ребята, у кого-то есть рабочий сервер? Выложите пожалуйста код. Я брал здесь и тут, но не на одном не работает. Добавлено через 5 часов 2 минуты Кстати, ни одна из этих команд : Цитата:
|
|
|||||
|
Регистрация: Nov 2010
Сообщений: 497
|
А с какой ошибкой ваша команда не выполняется? Может, там 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();
}
}
}
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/>); } } } Обработка исключений не совсем правильная (для примера - пойдет, в production close нужно в finally делать). Запись в два приема (нулевой байт отдельно) тоже может быть не очень для production (учитывая, что у вас вообще не работает - без разницы). |
|
|||||
|
Регистрация: Nov 2012
Сообщений: 30
|
Пробавал по разному, но ошибка одна и та же:
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 08:07. |
|
|
« Предыдущая тема | Следующая тема » |
|
|