Duck hunt
Cộng đồng Java Việt
Cộng đồng java Việt
Thông báo
Chú ý: Sắp tới ADM sẽ cải tiến lại wap, xây dựng thêm mục C, C ++ cho các bạn, các bạn có ý kiến gì thì góp ý cho AD nhá :D
Codej2me xin gửi lời cảm ơn đến: Holyeyed, Java_Editor!, chuonghugo,TVC97, thaian2009, gió(opakul), ironman..., và đặc biệt là forum j2mevn đã giúp Codej2me xây dựng wapsite này!!!
Có nhiều bạn chưa hiểu kĩ về Canvas nha, muốn chạy 1 app nào đó có Canvas thì phải Có Midlet nhá, tìm hiểu tại đây
Chatbox




Ví dụ về thread

 Ví dụ HTTP POST

HTTP POST cho phép gởi dữ liệu đến server. Dữ liệu gởi đến server qua phương thức 

GET chỉ giới hạn là dữ liệu chứa địa chỉ URL. Phương thức POST cho phép gởi một 

luồng byte đến server. Phương thức HTTP POST thực hiện theo cách tương tự với 

phương thức HTTP GET. 

Ví dụ thực hiện một kết nối HTTP POST: 

void getViaHttpConnection(String url) throws IOException { 

HttpConnection c = null; InputStream is = null; 

OutputStream os; 

try { 

c = (HttpConnection)Connector.open(url); // Mở kết nối 

// Thiết lập phương thức POST 

// trong khi vẫn ở trạng thái Thiết lập 

c.setRequestMethod(HttpConnection.POST); 

// Mở luồng output stream và chuyển sang trạng thái Kết nối 

os = c.openOutputStream(); 

// Chuyển đổi dữ liệu thành luồng byte 

// và gởi đến server 

os.write(“Data Sent to Server\n”.getBytes()); 

int status = c.getResponseCode(); 

// Kiểm tra status 

if (status != HttpConnection.HTTP_OK) throw new IOException(“not OK”); 

int len = (int)c.getLength(); 

// Giống như ví dụ HTTP GET: 

// Kiểm tra length và xử lý tương ứng 

} finally { 

// Đóng kết nối giống như ví dụ HTTP GET 

Như ví dụ trước, phương thức postViaHttpConnection() nhận tham số đầu vào là một 

chuỗi là địa chỉ URL được chuyển đến phương thức open() của lớp Connection. 

Phương thức open() trả về một đối tượng Connection đóng vai trò là một lớp 

HttpConnection. Kết nối bây giờ ở trong trạng thái thiết lập và phương thức yêu cầu được đặt là POST 

bằng phương thức setRequestMethod(). Tất cả các thuộc tính khác phải được thiết 

lập trong trạng thái này. 

Phương thức openOutputStream() sẽ làm cho kết nối chuyển sang trạng thái Kết nối. 

Phương thức write() và flush() sẽ gởi dữ liệu đến server. 

Đoạn mã còn lại giống như phương thức GET. Luồng input được mở, chiều dài của dữ

liệu được kiểm tra, và dữ liệu được đọc toàn bộ khối hay từng ký tự một tùy vào 

chiều dài được trả về. Khối lệnh cuối cùng sẽ đóng kết nối. 

1.6 Triệu gọi CGI script

Cả hai phương thức GET và POST có thể được dùng để triệu gọi CGI script (Common 

Gateway Interface script) và cung cấp dữ liệu nhập. Ví dụ, một MIDlet có một form 

cho người dùng điền dữ liệu, sau đó có thể gởi dữ liệu kết quả cho server để CGI 

script xử lý. CGI script có thể được triệu gọi giống như phương thức GET và POST. 

Tên của CGI script và dữ liệu tham số nhập có thể chuyển trong địa chỉ URL. Nếu cần 

gởi thêm dữ liệu cho server, thì có thể dùng phương thức POST. 

Ví dụ các tham số được gởi là một phần của URL: 

url = http://www.asite.com/cgi-bin/getloca...=abc&zip=12345

Trong ví dụ trên, địa chỉ URL có thể được chuyển như là một tham số giống như

phương thức getViaHttpConnection() ở ví dụ trước. 


MA dựa trên khung kết nối mạng tổng quát (GCF). 

Các tin nhắn được gởi và nhận với WMA được gởi trên các mạng không dây của điện 

thoại di động và các thiết bị tương tự khác, có thể là GSM hay CDMA. WMA hỗ trợ

Short Message Service (SMS) và Cell Broadcast Short Message Service (CBS). Mặc 

dù tin nhắn WMA tương tự như datagram, WMA không sử dụng giao diện datagram 

được định nghĩa bởi GCF, giao diện này dùng cho kết nối UDP. Thay vào đó, WMA 

định nghĩa một tập giao diện mới trong gói java.wireless.messaging. 

ĐWMA dựa trên khung kết nối mạng tổng quát (GCF). 

Các tin nhắn được gởi và nhận với WMA được gởi trên các mạng không dây của điện 

thoại di động và các thiết bị tương tự khác, có thể là GSM hay CDMA. WMA hỗ trợ

Short Message Service (SMS) và Cell Broadcast Short Message Service (CBS). Mặc 

dù tin nhắn WMA tương tự như datagram, WMA không sử dụng giao diện datagram 

được định nghĩa bởi GCF, giao diện này dùng cho kết nối UDP. Thay vào đó, WMA 

định nghĩa một tập giao diện mới trong gói java.wireless.messaging. 

Để gởi hoặc nhận tin nhắn, ứng dụng trước hết phải tạo một instance của giao diện 

MessageConnection, sử dụng GCF connection factory. Địa chỉ URL chuyển cho 

phương thức java.microedition.io.Connector.open() chỉ định giao thức sử dụng (SMS 

hoặc CBS), và số điện thoại đích, cổng, hoặc cả hai. Ví dụ, đây là những URL hợp lệ: 

sms://+417034967891 

sms://+417034967891:5678 

sms://:5678 

cbs://:5678 

URL trong hai dạng đầu tiên mở kết nối client, ứng dụng kết nối đến một server với 

địa chỉ thiết bị và cổng chỉ định. Nếu cổng không chỉ định, sẽ dùng cổng nhắn tin 

mặc định của ứng dụng. Dạng URL thứ ba mở một kết nối server trên thiết bị, cho 

phép ứng dụng đợi và hồi đáp tin nhắn đến từ các thiết bị khác. Dạng cuối cùng cho 

phép ứng dụng lắng nghi tin nhắn broadcast từ người điều hành mạng. 

Sau đây là một ví dụ đơn giản tạo một kết nối SMS client: 

import java.microedition.io.*; 

import java.wireless.messaging.*; 

..... 

MessageConnection conn = null; 

String url = "sms://+417034967891"; 

try { 

conn = (MessageConnection) Connector.open( url ); 

// thực hiện công việc gì đó 

catch( Exception e ){ 

// xử lý lỗi 

finally { 

if( conn != null ){ 

try { conn.close(); } catch( Exception e ){} 

Để gởi tin nhắn, sử dụng phương thức MessageConnection.newMessage() để tạo một 

tin nhắn rỗng, thiết lập payload của nó (dữ liệu văn bản hoặc nhị phân để gởi), và 

triệu gọi phương thức MessageConnection.send(): 

public void sendText( MessageConnection conn, String text ) 

throws IOException, InterruptedIOException { 

TextMessage msg = conn.newMessage( conn.TEXT_MESSAGE ); 

msg.setPayloadText( text ); 

conn.send( msg ); 

} Gởi dữ liệu nhị phân cũng hoàn toàn tương tự: 

public void sendBinary( MessageConnection conn, byte[] data ) 

throws IOException, InterruptedIOException { 

BinaryMessage msg =conn.newMessage( conn.BINARY_MESSAGE ); 

msg.setPayloadData( data ); 

conn.send( msg ); 

Dĩ nhiên, có giới hạn lượng dữ liệu có thể gởi trong một tin nhắn. Thông thường, tin 

nhắn văn bản SMS bị giới hạn đến 160 hoặc 70 ký tự, tin nhắn nhị phân bị giới hạn 

đến 140 bytes. 

Nhận tin nhắn thậm chí còn đơn giản hơn: Sau khi mở một kết nối server, ứng dụng 

gọi phương thức receive() của kết nối, phương thức này sẽ trả về tin nhắn có trong 

cổng đã xác định. Nếu không có tin nhắn, phương thức sẽ đứng (block) cho đến khi 

có tin nhắn, hoặc cho đến khi có một thread khác đóng kết nối: 

import java.io.*; 

import java.microedition.io.*; 

import java.wireless.messaging.*; 

MessageConnection conn = null; 

String url = "sms://:5678"; // không có số điện thoại! 

try { 

conn = (MessageConnection) Connector.open( url ); 

while( true ){ 

Message msg = conn.receive(); // blocks 

if( msg instanceof BinaryMessage ){ 

byte[] data =((BinaryMessage) msg).getPayloadData(); 

// thực hiện công việc gì đó 

} else { 

String text =((TextMessage) msg).getPayloadText(); 

//thực hiện công việc gì đó 

catch( Exception e ){ 

//xử lý lỗi 

finally { 

if( conn != null ){ 

try { conn.close(); } catch( Exception e ){} 

Để bảo đảm tính ổn định của chương trình, việc gởi và nhận thông điệp nên giao cho 

một thread riêng đảm nhận. 


Thông tin
Hiện có 1 đang Online, 1 visit trong ngày,2 visit trong tháng. Tổng lượt truy cập là 1321 lượt.
Liên Hệ - Hổ Trợ
Info Author Admin: Q.Phiên
Phone Author Phone: 01635514395
Hosting By XTGEM.COM
CodeJ2ME© 2014-2015