📄 netdata.java
字号:
package penguin;
import java.io.*;
import javax.microedition.io.*;
import java.lang.*;
import java.util.*;
/**
* 网络做为单独线程,因为网络收发数据可能阻塞,在主线程里设有超时。
*/
public class NetData extends Thread{
private DataInputStream is;
private DataOutputStream os;
private HttpConnection http;
private String m_url;
private String m_method;
private String m_delim;
private String m_para;//网络连接时的参数
public static int m_status;
private String m_suffix;//网络连接时的参数前缀
private String m_result;//从网络返回的原始数据
private int m_responseCode;//网络返回值
/**
* 网络连接状态设置
*/
public static final int INIT = -1;
public static final int START = 0;
public static final int CONNOPENED = 1;
public static final int OSOPENED = 2;
public static final int OSCLOSED = 3;
public static final int ISOPENED = 4;
public static final int DONE = 5;
public byte[] data;
/**构造函数
*param sURL:链接,这里是IP和服务器路径
*param ver: 上传时需要的版本号
*param name:用户输入的姓名
*param index:从第几名开始
*param count:需要几个数据
*param command:上传还是下载
*param score:如果是上传,则为用户的分数,下载数据时该位没有意义,可以置0
*/
NetData(String sURL,int ver, String name, int index, int count, int command,
int score) {
m_url = sURL;
is = null;
os = null;
http = null;
m_delim = "%3b"; //分号,分隔符
m_status = INIT;
m_suffix = "server?param0=";
m_responseCode = 0;
m_para = Integer.toString(ver) + m_delim + name + m_delim
+ Integer.toString(index) + m_delim
+ Integer.toString(count) + m_delim
+ Integer.toString(command) + m_delim
+ Integer.toString(score) + m_delim;
m_url = m_url + m_suffix + m_para;
}
public String getURL(){
m_url = m_url + m_suffix + m_para;
return m_url;
}
public int getStatus() {
return m_status;
}
public String getResult(){
return m_result;
}
public int getResponseCode(){
return m_responseCode;
}
/**
* 数据传输过程
* 建立连接,发送链接,取得返回原始数据
* 返回错误号,设置m_responseCode和m_status,供主程序判断
*/
public int TransData() {
m_status = this.START;
StringBuffer sb = new StringBuffer();
try {
if (m_para.length() > 0) {
System.out.println(m_url);
try{
http = (HttpConnection) Connector.open(m_url,Connector.READ_WRITE,true);
}
catch(Exception e){
m_result = "ERROR";
m_status = this.DONE;
return -1;
}
m_status = this.CONNOPENED;
}
else {
m_result = "ERROR";
m_status = this.DONE;
return -1;
}
m_responseCode = http.getResponseCode() ;
is = new DataInputStream(http.openInputStream());
int len = (int) http.getLength();
int ret = -1;
/**
* 如果返回len>0,则按照len的长度读取数据
*/
if ( len > 0){
int ch = 0;
for ( int j = 0; j<len; j++){
if ((ch = is.read()) != -1){
sb.append((char)ch);
}
}
m_result = sb.toString();
}
/**
* 如果返回len<=0,则读取返回数据直到遇到结束符
*/
else{
try {
int ch = 0;
while ( (ch = is.read()) != -1){
sb.append((char)ch);
}
m_result = sb.toString();
}
catch (IOException e) {
m_result = "ERROR";
}
}
}
catch (Exception e) {
m_result = "ERROR";
}
m_status = this.DONE;
return 0;
}
/**
* 网络线程的运行函数
*/
public void run(){
int ret = TransData();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -