å¶ä½äºº: CK.y ï¼æ±æ建çä¼ä¸ç®¡çQï¼610089144
ä»
ä¾åèï¼å¤§å®¶è¦å¦ä¼èªå·±å¶ä½ï¼å¾ææå°±æçåï¼ï¼ ç¨ Java ä½åå°ï¼å¼åä¸ä¸ª C / S æ¶æçå¤äººè天ç¨åºãé¦å
ï¼è®¾è®¡ç¨æ·çé¢ã
ä¸ãçé¢è®¾è®¡
çé¢çå
件å
¨é¨ä½¿ç¨ Flash CS3 èªå¸¦çç»ä»¶ï¼
é¦å
ï¼æ¾å
¥ TextInput ç»ä»¶ï¼å®ä¾å input_txtï¼ï¼ä½ä¸ºç¨æ·è¾å
¥ï¼
åæ¾å
¥ Button ç»ä»¶ï¼å®ä¾å submit_btnï¼ï¼ç¨äºæ交è¾å
¥çä¿¡æ¯ï¼
æåæ¾å
¥ TextArea ç»ä»¶ï¼å®ä¾å output_txtï¼ï¼æ¾ç¤ºè天信æ¯ã
äºãç»ä»¶åæ°åå§å
ç±äºå®¢æ·ç«¯ä»£ç ä¸æ¯å¾å¤ï¼æ们è¿æ¬¡å°±åå¨å¨ä½å¸§ä¸ï¼
// ************ ç»ä»¶åæ°åå§å ************
submit_btn.label = "åéæ¶æ¯";
output_txt.editable = false;
// 设置åç»ä»¶ä¸åä½ç大å°
input_txt.setStyle("textFormat", new TextFormat(null, 15));
output_txt.setStyle("textFormat", new TextFormat(null, 15));
submit_btn.setStyle("textFormat", new TextFormat(null, 15, null, true));
// å½æä¸å车æç¹å» submit_btn æé®åè°ç¨äºä»¶å¤çå½æ°
submit_btn.addEventListener(MouseEvent.CLICK, sendMessage);
addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
// äºä»¶å¤çå½æ°
function onKeyDown(evt:KeyboardEvent):void {
if (evt.keyCode == Keyboard.ENTER) {
sendMessage(null);
}
}
function sendMessage(evt:Event):void {
// æµè¯ï¼å° input_txt çå
容è¾åºå° output_txt ä¸
output_txt.appendText(input_txt.text + "\n");
// æ¸
空 input_txtï¼å¹¶è®¾ç½®ç¦ç¹å° input_txt
input_txt.text = "";
stage.focus = input_txt;
}
ä¸ãç¼å客æ·ç«¯ Socket
1. é¦å
ï¼Socket è¿æ¥é常ç®åï¼
var socket:Socket = new Socket();
socket.connect("127.0.0.1", 8888);
å
¶ä¸ connect() æ¹æ³ä¸ç两个åæ°åå«ä¸ºæ¯ä¸»æºåå端å£å·ï¼ç«¯å£å·å°½éç¨ 1024 以ä¸ï¼ã好äºï¼è¿æ ·å°±è¿æ¥ä¸äºãæ¥ä¸æ¥æ¯è¯»åçé®é¢ã
2. åæå¡å¨ç«¯åå
¥å符串ï¼æä»¬å¨ sendMessage() æ¹æ³ä¸è¿è¡åå
¥æä½ï¼æ³¨æååºçå串å¿
é以å车ï¼\nï¼ç»æï¼
function sendMessage(evt:Event):void {
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(input_txt.text + "\n");
socket.writeBytes(bytes);
socket.flush();
// æ¸
空 input_txtï¼å¹¶è®¾ç½®ç¦ç¹å° input_txt
input_txt.text = "";
stage.focus = input_txt;
}
3. 读åæå¡å¨ç«¯ååçå符串ï¼æåå°æå¡å¨ååçå符串è¾åºå° output_txt ææ¬åä¸ï¼
// å½å®¢æ·ç«¯ socket æ¶å°æ°æ®åä¼è°ç¨ readMessage() å½æ°
socket.addEventListener(ProgressEvent.SOCKET_DATA, readMessage);
function readMessage(evt:ProgressEvent):void {
output_txt.appendText(socket.readUTF() + "\n");
}
åãFlash 客æ·ç«¯å
¨é¨èæ¬
// ************ ç»ä»¶åæ°åå§å ************
submit_btn.label = "åéæ¶æ¯";
output_txt.editable = false;
input_txt.setStyle("textFormat", new TextFormat(null, 15));
output_txt.setStyle("textFormat", new TextFormat(null, 15));
submit_btn.setStyle("textFormat", new TextFormat(null, 15, null, true));
submit_btn.addEventListener(MouseEvent.CLICK, sendMessage);
addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
function onKeyDown(evt:KeyboardEvent):void {
if (evt.keyCode == Keyboard.ENTER) {
sendMessage(null);
}
}
function sendMessage(evt:Event):void {
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(input_txt.text + "\n");
socket.writeBytes(bytes);
socket.flush();
input_txt.text = "";
stage.focus = input_txt;
}
// ************ 客æ·ç«¯ Socket ************
var socket:Socket = new Socket();
socket.connect("127.0.0.1", 8888);
socket.addEventListener(ProgressEvent.SOCKET_DATA, readMessage);
function readMessage(evt:ProgressEvent):void {
output_txt.appendText(socket.readUTF() + "\n");
}
äºãç¼å Java æå¡å¨ç«¯ Socket
æåï¼æ们éè¦ç¼å Java åå°æå¡å¨ç«¯ç代ç ã
é¦å
ï¼å建ä¸ä¸ª ServerSocket ä½ä¸ºSocket æå¡å¨ãå½æ客æ·ç«¯è¿æ¥åéè¿ accept() æ¹æ³å³å¯å¾å°å®¢æ·ç«¯ç Socketï¼
ServerSocket socketServer = new ServerSocket(8888);
System.out.println("æå¡å¨å·²å¯å¨ï¼çå¾
客æ·ç«¯è¿æ¥");
// accept() æ¹æ³æ¯é»å¡å¼çï¼å½æ客æ·ç«¯è¿æ¥æååæ继ç»æ§è¡
Socket socket = socketServer.accept();
System.out.println("客æ·ç«¯è¿æ¥æå");
ç¶åå¾å°ä¸å®¢æ·ç«¯çè¾å
¥æµåè¾åºæµï¼è¾å
¥æµæ¯å®¢æ·ç«¯è¿æ¥å°æå¡å¨ç管éï¼è¾åºæµåæ¯æå¡å¨å°å®¢æ·ç«¯ç管éï¼ï¼
// è·å¾è¾å
¥æµåè¾åºæµï¼è¾å
¥æµä¸º BufferedReader ç±»åï¼è¾åºæµä¸º DataOutputStream ç±»å
BufferedReader reader =
new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
DataOutputStream writer = new DataOutputStream(socket.getOutputStream());
æ¿å°è¾å
¥è¾åºæµä»¥åï¼å°±å¯ä»¥éè¿è¾å
¥æµï¼InputStreamï¼è¯»å Flash 客æ·ç«¯åæ¥çå符串ï¼éè¿è¾åºæµï¼OutputStreamï¼å Flash 客æ·ç«¯åå符串ï¼
while (true) {
// readLine() æ¹æ³ä¹æ¯é»å¡å¼çï¼å½å®¢æ·ç«¯ææ¶æ¯åæ¥å°±è¯»åï¼å¦åå°±ä¸ç´çå¾
String msg = reader.readLine();
// å½å®¢æ·ç«¯åéçå符串为 null æ¶ï¼è¯´æ客æ·ç«¯å·²ç»å
³éï¼æ¤æ¶éåºå¾ªç¯
if (msg == null) {
System.out.println("客æ·ç«¯å·²ç¦»å¼");
break;
}
// å°è¯»å
¥çä¿¡æ¯å å·¥åååå客æ·ç«¯
writer.writeUTF("åå客æ·ç«¯ç" + msg);
}
以ä¸æ¯ServerSocket ä¸ AS 3 Socket éä¿¡çåºæ¬åçãå¨å®é
åºç¨ä¸ï¼ä¼æå¤ä¸ªå®¢æ·ç«¯è¿æ¥è¿ä¸ªServerSocketï¼å æ¤è¦å建ä¸ä¸ªå¤çº¿ç¨ç Socket æå¡å¨ã
ä¸é¢ç®è¿°ä¸ä¸å¤çº¿ç¨ Socket æå¡å¨åçï¼å½socketServer.accept() ä¹åå°±éè¦å®ä¾åä¸ä¸ªçº¿ç¨å¯¹è±¡ï¼å¨è¯¥å¯¹è±¡ä¸ææsocketServer.accept() è¿åç Socket 对象ï¼ç¶å让线ç¨è·èµ·æ¥æ§è¡è¯»åæä½ãå¦æåæ¥ä¸ä¸ªå®¢æ·ç«¯å°±åè·ä¸ä¸ªçº¿ç¨ï¼åæ ·æ§è¡è¯»åæä½ãåæ¶ï¼ç¨ä¸ä¸ª List 容å¨æ¥ç®¡çè¿äºå¯¹è±¡ã
æç»æå¡å¨ç«¯ç代ç å¦ä¸ï¼
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class FlashScoket {
private List<Client> clientList = new ArrayList<Client>();
public static void main(String[] args) {
new FlashScoket().runSocket();
}
private void runSocket() {
try {
ServerSocket socketServer = new ServerSocket(8888);
System.out.println("æå¡å¨å·²å¯å¨ï¼çå¾
客æ·ç«¯è¿æ¥");
while (true) {
// accept() æ¹æ³æ¯é»å¡å¼çï¼å½æ客æ·ç«¯è¿æ¥æååæ继ç»æ§è¡
Socket socket = socketServer.accept();
System.out.println("客æ·ç«¯è¿æ¥æå");
// å®ä¾åä¸ä¸ª Client 对象ï¼å¹¶å¯å¨è¯¥çº¿ç¨
Client client = new Client(socket);
clientList.add(client);
client.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
class Client extends Thread {
private Socket socket;
private BufferedReader reader;
private DataOutputStream writer;
private Client(Socket socket) {
this.socket = socket;
try {
// è·å¾è¾å
¥æµåè¾åºæµï¼è¾å
¥æµä¸º BufferedReader ç±»åï¼è¾åºæµä¸º DataOutputStream ç±»å
reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
writer = new DataOutputStream(socket.getOutputStream());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
try {
while (true) {
// readLine() æ¹æ³ä¹æ¯é»å¡å¼çï¼å½å®¢æ·ç«¯ææ¶æ¯åæ¥å°±è¯»åï¼å¦åå°±ä¸ç´çå¾
String msg = reader.readLine();
// å½å®¢æ·ç«¯åéçå符串为 null æ¶ï¼è¯´æ客æ·ç«¯å·²ç»å
³éï¼æ¤æ¶éåºå¾ªç¯
if (msg == null) {
clientList.remove(this);
System.out.println("客æ·ç«¯å·²ç¦»å¼");
break;
}
// å°è¯»å
¥çå
容åç»æ¯ä¸ªå®¢æ·ç«¯
for (Iterator<Client> it = clientList.iterator(); it.hasNext();) {
Client client = it.next();
client.getWriter().writeUTF(msg);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// å
³é socket åç¸å
³èµæº
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (writer != null) {
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (socket != null) {
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
public DataOutputStream getWriter() {
return writer;
}
}
}
å
ãè¡¥å
ææ¯
1. å¦ä½æµè¯ï¼
* é¦å
è¦ç¼è¯FlashScoket ââ javac FlashScoket
* ç¶åå¯å¨FlashScoket ââ java FlashScoket
* æåå° Flash åå¸ä¸º exe æä»¶æ ¼å¼ï¼åæ¶å¼å¯å¤ä¸ªå³å¯ã
2. èªå¨è·è¸ªå°æåä¸è¡ï¼å½æ¶å°æ°çæ¶æ¯æ¶èªå¨æ»å¨å°æåä¸è¡ï¼å¨ readMessage() æ¹æ³ä¸å å
¥ï¼
output_txt.verticalScrollBar.scrollPosition = output_txt.verticalScrollBar.maxScrollPosition;
3. å½åºç°è¾å
¥/è¾åºé误并导è´åéæå è½½æä½å¤±è´¥æ¶æ示ç¨æ·ï¼å å
¥å¯¹IO_ERROR ç侦å¬ï¼
socket.addEventListener(IOErrorEvent.IO_ERROR, socketIOError);
function socketIOError(evt:IOErrorEvent):void {
output_txt.appendText("æå¡å¨ç«¯å°æªå¼å¯ï¼è¯·ç¨ååè¯\n");
}
4. å¨sendMessage() ä¸å å
¥å¯¹ç©ºå符串çéªè¯ï¼å¦æ为空å returnï¼
if (input_txt.text == "") {
return;
}
5. å¨æ¶æ¯åé¢æ¾ç¤ºç¨æ·åï¼å¤§å®¶å¯ä»¥å¶ä½ä¸ä¸ªç»å½é¡µé¢ï¼è¾å
¥ç¨æ·åï¼å设已å°è¾å
¥çç¨æ·ååæ¾å¨ userName åéä¸ï¼å¨åå
¥æ¶å è¿å»ï¼
var userName:String = "FL 车å¨è£";
å¨ sendMessage() ä¸ç¸åºæ¹ä¸ºï¼
bytes.writeUTFBytes(userName + " : " + input_txt.text + "\n");
6. 使ç¨output_txt .htmlText è¾åºæåï¼é£ä¹ç¸åºçåå
¥æ ¼å¼å¯ä»¥è°æ´ä¸ºï¼
bytes.writeUTFBytes("<font color='#0000FF'>" + userName + " : </font>" + input_txt.text + "\n");
温馨提示:答案为网友推荐,仅供参考