服务器代码:
package JSocket;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Server {
private static final int PORT = 3000; // 端口号
private static List list = new ArrayList(); // 保存连接对象
private ExecutorService exec;
private ServerSocket server;
public static void main(String[] args) {
new Server();
}
public Server() {
try {
server = new ServerSocket(PORT);
exec = Executors.newCachedThreadPool();
System.out.println("服务器已启动!");
Socket client = null;
while (true) {
client = server.accept(); // 接收客户连接
list.add(client);
exec.execute(new ChatTask(client));
}
} catch (IOException e) {
e.printStackTrace();
}
}
static class ChatTask implements Runnable {
private Socket socket;
private BufferedReader br;
private String msg="";
public ChatTask(Socket socket) throws IOException {
this.socket = socket;
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
}
public void run() {
new Thread(new Runnable() {
public void run() {
PrintWriter pw;
try {
pw = new PrintWriter(socket.getOutputStream(), true);
int i = 0;
while(true){
i=i+1;
msg=i+"\n";
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
pw.println(msg);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
}
}
客户端代码:
<?xml version="1.0" encoding="utf-8"?>
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" applicationComplete="initApp()">
fx:Script
<![CDATA[
import flash.net.Socket;
import mx.controls.Alert;
private var socket:Socket;
private function initApp():void
{
StartTest();
}
private function StartTest():void
{
socket = new Socket("127.0.0.1",3000);
// socket.addEventListener(Event.CONNECT, connectHandler);
socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
}
private function CloseTest():void
{
if(socket!=null && socket.connected)
{
trace("socket.connected:"+socket.connected);
socket.close();
trace("socket.connected:"+socket.connected);
}
}
// private function connectHandler(event:Event):void
// {
// trace("connectHandler: " + event);
// socket.writeMultiByte(SendStr.text,"GB2312");
// socket.flush();
// }
private function socketDataHandler(event:ProgressEvent):void
{
trace("socketDataHandler: " + event);
var str:String=socket.readMultiByte(socket.bytesAvailable,"GB2312");
[color=red]ExternalInterface.call("addValue",str);[/color]
// Alert.show(str);
// ReceiveStr.text = str;
}
private function alert():void{
for(var i:int=0;i
ExternalInterface.call("addValue","success!"+i);
}
}
]]>
/fx:Script
/s:Application
jsp代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
jsocketTest
[color=red]<br> function addValue(value) {<br> alert(value);<br> //mySocket.innerText = mySocket.innerText + value;<br> }<br> [/color]
<!--[if !IE]>-->
<!--<![endif]-->
<!--[if gte IE 6]>-->
Either scripts and active content are not permitted to run or Adobe Flash Player version
10.0.0 or greater is not installed.
<!--<![endif]-->

<!--[if !IE]>-->
<!--<![endif]-->
我想用java建立tcp/ip服务器然后用flash接受服务器发送的数据,同事将数据发送给js代码然后进一步操作,但是flash单独运行可以接受到服务器的数据,但一旦传给js,js确接不到数据。正常用flash调用js函数还好使,就是flash从服务器接受到的数据在传给js就是显示不出来!帮帮我吧!先谢谢大家了!