Thứ Ba, 27 tháng 1, 2009

Socket with java server

một ví dụ về socket:

flash chỉ có thể là client. Cần dùng một ngôn ngữ khác để tạo server socket:

java server socket:

server đợi request từ client tới, nếu có request, sẽ tạo socket với client. Sau khi tạo socket, trả về client chuỗi "hello client".
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server
{

/**
* @param args
*/
public static void main(String[] args)
{
try
{
//tao ServerSocket
ServerSocket server = new ServerSocket(2000);

//create socket connect to client
Socket socket = server.accept();//wait client request
System.out.println("da tao socket");

//create stream to write to client
OutputStreamWriter out = new     OutputStreamWriter(socket.getOutputStream());
//write from server
out.write("hello client");
out.flush();

//create stream to read from client
BufferedReader read = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//read from client
String str;
while(true)
{
str = read.readLine();
if(str==null) break;
System.out.println(str);
}

} catch (Exception e)
{
e.printStackTrace();
}

}

Phía client: ta dùng actionscript để tạo socket kết nối với server:  tạo application trong flex:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
private var server:String = "localhost";
private var port:Number = 2000;
private var socket:Socket;
private function init():void {
socket = new Socket();
socket.addEventListener(Event.CONNECT, onConnect);
socket.addEventListener(Event.CLOSE, onClose);
socket.addEventListener(ErrorEvent.ERROR, onError);
socket.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
socket.addEventListener(ProgressEvent.SOCKET_DATA, onResponse);
Security.allowDomain(server);
Security.loadPolicyFile("http://"+server+"/crossdomain.xml");
try {
socket.connect(server, port);
outMessage("Trying to connect to "+server+":"+port);
} catch (error:Error) {
socket.close();
outMessage(error.message);
}

}
public function send(string:String):void {
socket.writeUTFBytes(string);
socket.flush();
}
private function onConnect(event:Event):void {
outMessage("Connected to "+server+":"+port);
socket.writeUTFBytes("hello server 1\n");
// send("respond");
}
private function onClose(event:Event):void {
outMessage("Connection closed");
}
private function onError(event:IOErrorEvent):void {
outMessage("Connection error");
}
private function onIOError(event:IOErrorEvent):void {
outMessage("I/O error");
}
private function onResponse(event:ProgressEvent):void {
var string:String = socket.readUTFBytes(socket.bytesAvailable);
outMessage(string);
socket.writeUTFBytes("hello server 2\n");

}
public function outMessage(msg:String):void {
log.htmlText += '<font color="#000099">'+msg+'<br></font>';
}
]]>
</mx:Script>
<mx:TextArea id="log" width="400" height="200" x="10" y="10" selectable="false"/>
</mx:Application>

Mọi giao tiếp giữa client và server cần được viết trong hàm onResponse(event:ProgressEvent).

3 nhận xét:

  1. vậy giải pháp cho tình huống thực tế là có nhiều request được gửi đến server từ client thì sao em? multi threading ah :)

    Trả lờiXóa
  2. Bằng nguồn lực nhân sự và tiềm lực tài chính vững mạnh, cùng một chiến lược kinh doanh hiệu quả mang tính định hướng tương lai. snr phẩm máy hàn Vạn Thái luôn nỗ lực trở thành "Nhà phân phối đa ngành" hàng đầu tại Việt Nam. Với bề dày trong các hoạt động giao thương quốc tế, Vạn Thái không ngừng tìm ra những sản phẩm có chất lượng ngày càng tốt hơn, tối ưu hóa chi phí đầu tư của Khách hàng. Những dịch vụ, sản phẩm mang các thương hiệu thuộc sở hữu của Vạn Thái đều đạt tiêu chuẩn chất lượng cao, quy trình sản xuất nghiêm ngặt và phù hợp nhất với thị hiếu của khách hàng tại mỗi quốc gia mà Vạn Thái đầu tư.
    Hoàng Gia là thương hiệu wedding và tổ chức các sự kiện đặc biệt hàng đầu tại Việt Nam, luôn sáng tạo và đi đầu với những ý tưởng phông hội trường vad dịch vụ tổ chức đám cưới cưới độc đáo, ấn tượng. Ngoài ra, chúng tôi chuyên cung cấp phu tung o to chính hãng giá rẻ như phụ tùng ô tô huyndai, phu tung oto mitsubishi, phu tung oto ford, phu tung oto kia chính hãng. Đói bụng cần tìm chỗ ăn món vịt om sấu, bánh rán doremon, phở cuốn, cút lộn xào me hay những quán ngon hà nội hoặc tìm quán cafe đẹp thì lên lozi.vn nhé

    Trả lờiXóa
  3. Tôi đã chua dau da day khỏi như thế nào ? , Cách chữa benh viem loet da day ta trang , Cách chữa viêm amidan mãn tính , Thuốc trị amidan mủ ,điều trị benh me day , điều trị gan nhiễm mỡ , đặc trị viêm phế quản phổi, Làm thế nào để có bài thuoc chua ho ,Cách chữa trị viêm mũi dị ứng ,thuốc chữa viem xoang man tinh ,Cách chữa bệnh đau dạ dày hiệu quả , Phương pháp chữa thực quản dạ dày , Bài thuốc đặc trị trào ngược dạ dày ở trẻ em, thuốc chống benh rung toc, Vô sinh do ảnh hưởng từ bệnh roi loan kinh nguyet ở phụ nữ , mắc chứng thoai hoa dot song co làm cách nào để chữa ? Tìm hiểu về cách giảm đau dạ dày Để biết cách giảm bớt cơn đau của bệnh . Phương thuốc quý chua viem gan b Hiệu quả , Đông y chua viem amidan , Viêm họng và viêm amidan cấp mủ làm sao chữa được ?, Thuốc đông y chữa bệnh đau đại tràng lâu ngày . Chúng tôi chuyên nghiên cứu bệnh đau dạ dày ăn gì cho nhanh khỏi . Bạn nên biết về triệu chứng bệnh đau dạ dày Như thế nào.

    Trả lờiXóa