XtGem Forum catalog
↓↓xuống cuối trang↓↓
Chào mừng bạn đến với wap DinhLoi.XtGem.Com | Chúc bạn có 1 năm mới vui vẻ tốt lành hạnh phúc! Hãy giới thiệu website này cho bạn bè nhé!img
DinhLoi.XtGem.Com =>> CaFe9x.Gq
Bạn đến từ quốc gia:



Hôm nay ngày
27.02.25/11:35
img- Hi. Xin chào! Mozilla/5.0
logo
.
HOMECHÁTTruyệnFORUM
logo

Chatbox|Admin nhận làm wap/web, giá cả thương lượng... Thông tin admin tại mỗi bài viết.
Home · Bang hội ·
* Đăng Nhập hoặc Đăng Kí
để sử dụng hết chức năng của diễn đàn.
Hi, Khách!
HomeBang hội » Thủ thuật » Nokia s40 » » Xem bài viết
Xuống dưới »
avatar by Pham_loi Pham_loi
Chức vụ:
02:19:03, 02-06-2016

Gửi thông tin đến server theo từng đợt
Bài trước chúng ta đã có thể đăng nhập vào một hệ thống thành viên đơn giản, code trước tôi cũng đã post hết mã source của server. Chúng ta ở bài này sẽ sử dụng form send.html và gửi thông tin đến server thông qua form này. Nhưng đầu tiên chúng ta cần tạo ra một nhân vật của mình, tôi cũng sử dụng class robot để tạo nhân vật, nhưng chúng ta sẽ trực tiếp điều khiển nó thông qua phím chứ không phải là mã lệnh nữa. class canvas của chúng ta sẽ thành như thế này:
C:\Users\thanhliem\Documents\NetBeansProjects\mog\src\mog.java

<?php
class canvas extends Canvas{
textfield tf;
Vector rb=new Vector();
Font f=Font.getFont(0,0,8);
int w,h,k=0,fh;
String command="";
//tạo ra một biến robot để làm nhân vật của ta, tại vị trí (0,0)
robot me=new robot(0,0);
public 
canvas(){
setFullScreenMode(true);
w=getWidth();
h=getHeight();
fh=f.getHeight();
tf=new textfield("command",0,0,w);
}
public 
void paint(Graphics g){
g.setFont(f);
g.setColor(0);
g.fillRect(0,0,w,h);
tf.paint(g,k,true);
g.setColor(0xf0f0);
g.setClip(0,0,w,h);
g.drawString(command,0,fh*2,Graphics.TOP|Graphics.LEFT);
if(
rb!=null)
for(
int i=0;i<rb.size();i++)
((
robot)rb.elementAt(i)).paint(g);
//vẽ nhân vật chúng ta lên canvas qua hàm paint của class robot
me.paint(g);
k=0;
repaint();
}
public 
void keyPressed(int k){
this.k=k;
if(
k==-5){
command=tf.getString();
Stringacommand=tach(command,".");
Vector trb=new Vector();
for(
int i=0;i<acommand.length;i++){
    
Stringinfo=tach(acommand[i,",");
    
robot nrb=new robot(w/2,h/2);
    for(
int j=0;j<rb.size();j++){
    if(
info[0.equals(((robot)rb.elementAt(j)).say)){nrb=(robot)rb.elementAt(j);
    
System.out.println("dectect");}}
    
nrb.getcommand(info);
trb.addElement((robot)nrb);}
rb=trb;}
//ta thêm đoạn này để điều khiển trực tiếp biến me (robot) thông qua nhấn phím
if(k==-4){me.nx=me.x+5;}
if(
k==-3){me.nx=me.x-5;}
if(
k==-2){me.ny=me.y+5;}
if(
k==-1){me.ny=me.y-5;}
}
public 
void keyReleased(int k){this.k=0;}

public 
Stringtach(String s,String c){
Vector v=new Vector();
if(!
s.endsWith(c)){s+=c;}
int st=0,np=s.indexOf(c,st);
while(
np!=-1){
v.addElement((String)s.substring(st,np));
st=np+c.length();
np=s.indexOf(c,st);}
Stringrt=new String[v.size();
v.copyInto((String[)rt);
for(
int i=0;i<rt.length;i++){System.out.println(rt[i+rt[i.length());}
return 
rt;}
}
?>

Copy code

Xong bây giờ thì chỉnh sửa một chút ở file mog.java để gửi thông tin lên server thông qua hàm send mà ta đã biết. địa chỉ vẫn là địa chỉ cũ, còn thông số thì có thay khác theo form send.html chúng ta đã biết (nghiên cứu html nhé).
C:\Users\thanhliem\Documents\NetBeansProjects\mog\src\mog.java
<?php
public class mog extends MIDlet implements Runnable{
    
//tạo biến nhận giá trị của user và pass
    
String user,pass;
    
//id là giá trị của trả về ứng với mỗi user có một số id riêng biệt
    
int id,mode=0;
    
canvas cv=new canvas();
public 
void startApp(){
    
//chúng ta cho hiển thị form login là một class mở rộng từ class Form
Display.getDisplay(this).setCurrent(new login(this));}
public 
void destroyApp(boolean t){}
public 
void pauseApp(){}
//hàm cv này dùng để nhận giá trị từ login.java sau khi đã thực hiện nhấn lệnh ok 
public void cv(String user,String pass){
    
this.user=user;
    
this.pass=pass;
    
//hàm send trả về dữ liệu lấy từ server là id nhưng có kèm theo mã BOM của utf-8
   
String stsend("http://holyeyed.99k.org/game/server.php","submit=2&user="+user+"&pass="+pass);
   
//nếu như trả về dữ liệu khác null thì cho hiện canvas.
   
id=Integer.parseInt(st.substring(3));
   if(
id>0){
Display.getDisplay(this).setCurrent(cv);
//chuyển mode sang 3, và cho khởi động thread
mode=3;
   new 
Thread(this).start();}}
//khi thread khởi động nó sẽ không dừng lại
public void run(){
    while(
true){
        try{
            
//cho ngừng một khoảng thời gian (500millis) sau mỗi lần gửi thông tin lên server
            
Thread.sleep(500);
switch(
mode){
    case 
1:
break;
    case 
2:
break;
    case 
3:
        
//thông qua hàm send gửi các thông tin gồm: id, mess, x, y lên server.
        
send("http://holyeyed.99k.org/game/server.php","submit=3&id="+id+"&mess=holyeyed&x="+cv.me.x+"&y="+cv.me.y);
break;}}catch(
Exception e){}}}
//hàm send dùng thực hiện kết nối, nhận 2 tham số là địa chỉ web và các thông số gửi đi
String send(String add,String para){
try{
HttpConnection hc=(HttpConnection)Connector.open(add);
//set method giống với form trên server
hc.setRequestMethod(HttpConnection.POST);
//khi method là POST thì phải có content-type
hc.setRequestProperty("Content-Type"
           
"application/x-www-form-urlencoded");
//phần sau là đọc và trả về chuỗi
OutputStream os=hc.openOutputStream();
os.write(para.getBytes());
InputStream is=hc.openDataInputStream();
int c;
StringBuffer sb=new StringBuffer();
while((
c=is.read())!=-1){sb.append((char)c);}
is.close();
os.close();
hc.close();
System.out.println(sb.toString());
return 
sb.toString();
}catch(
Exception e){}
return 
null;}}
?>

Copy code

Vậy thôi, dù bạn có chạy chương trình thì chỉ có thể thấy là điều khiển được nhân vật hình vuông thôi, chứ không biết nó có gửi thông tin đúng lên server hay không. Nhưng đừng lo, theo lý thuyết là vậy và bạn sẽ biết được là nó có thật sự gửi được hay không thì chờ bài sau nhé.


Source: mog-84566.zip
Jar: mog-57614.jar

Like: 0

Trực Tuyến: Khách: 1
Diễn đàn teen Việt Nam
CopyRight 2014
Tag:
Bạn đến từ:
Share: img img img img img

Thanks To:XtGem
Liên kết:U-ON