以下代码是android 客户端主要代码;视频教程:http://www.jikexueyuan.com/course/200_5.html
Socket socket = null;
BufferedWriter writer = null;
BufferedReader reader = null;
public void connect() {
AsyncTask<Void, String, Void> read = new AsyncTask<Void, String, Void>() {
@Override
protected Void doInBackground(Void... arg0) {
try {
socket = new Socket(ip.getText().toString(), 33333);
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
publishProgress("@success");
} catch (UnknownHostException e1) {
Toast.makeText(MainActivity.this, "无法连接到服务器", Toast.LENGTH_SHORT).show();
} catch (IOException e1) {
Toast.makeText(MainActivity.this, "无法连接到服务器", Toast.LENGTH_SHORT).show();
}
try {
String line;
while ((line = reader.readLine())!= null) {
publishProgress(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(String... values) {
if (values[0].equals("@success")) {
Toast.makeText(MainActivity.this, "连接到服务器", Toast.LENGTH_SHORT).show();
}
text.append("对方说"+values[0]+"\n");
super.onProgressUpdate(values);
}
};
read.execute();
}
public void send() {
try {
text.append("我说"+editText.getText().toString()+"\n");
writer.write(editText.getText().toString()+"\n");
writer.flush();
editText.setText("");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
服务器端代码;
public class LEDscoket {
public static void main(String[] args) {
new ServerListener().start();
}
}
public class ServerListener extends Thread{
public void run() {
try {
ServerSocket serverscoket =new ServerSocket(33333);
while(true){
Socket scoket =serverscoket.accept();
// JOptionPane.showMessageDialog(null, "连接到33333");
ChatScoket cs=new ChatScoket(scoket);
cs.start();
ChatManage.getChatManage().add(cs);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class ChatScoket extends Thread{
Socket scoket;
public ChatScoket(Socket s) {
this.scoket=s;
}
public void out(String out) {
try {
scoket.getOutputStream().write((out+"\n").getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
System.out.println("断开了一个客户端链接");
ChatManage.getChatManage().remove(this);
e.printStackTrace();
}
}
@Override
public void run() {
out("{\"message\":\"success\",\"saledata\":[{\"itemid\":\"0d8de188-4c66-4d53-834f-d9e29a2562c3\",\"itemname\":\"黄金南瓜\",\"averageprice\":\"2.30\"},{\"itemid\":\"0d8de188-4c66-4d53-834f-d9e29a2562c3\",\"itemname\":\"大白菜\",\"averageprice\":\"2.60\"},{\"itemid\":\"0d8de188-4c66-4d53-834f-d9e29a2562c3\",\"itemname\":\"黄瓜\",\"averageprice\":\"2.31\"},{\"itemid\":\"0d8de188-4c66-4d53-834f-d9e29a2562c3\",\"itemname\":\"大白菜\",\"averageprice\":\"4.62\"},{\"itemid\":\"0d8de188-4c66-4d53-834f-d9e29a2562c3\",\"itemname\":\"金针菇\",\"averageprice\":\"3.40\"},{\"itemid\":\"0d8de188-4c66-4d53-834f-d9e29a2562c3\",\"itemname\":\"荸荠\",\"averageprice\":\"4.50\"},{\"itemid\":\"0d8de188-4c66-4d53-834f-d9e29a2562c3\",\"itemname\":\"大葱\",\"averageprice\":\"2.38\"},{\"itemid\":\"b12afcca-bff1-4651-ae71-bce6d70a25e4\",\"itemname\":\"金花菜\",\"averageprice\":\"2.60\"},{\"itemid\":\"0d8de188-4c66-4d53-834f-d9e29a2562c3\",\"itemname\":\"土豆\",\"averageprice\":\"4.00\"},{\"itemid\":\"a014caa1-2109-4c8f-b5a4-42cd7ba70e58\",\"itemname\":\"白萝卜\",\"averageprice\":\"4.00\"},{\"itemid\":\"8a7207a1-786e-4523-9154-b983567a3164\",\"itemname\":\"胡萝卜\",\"averageprice\":\"4.00\"}],\"rentalname\":\"瑶瑶\",\"ownerattachmentid\":\"/save/img/20160315/a4f9c7de-caee-435d-97e3-38d3a7822c60.png\",\"registrationnumber\":\"蔬菜1\",\"businesstype\":\"蔬菜\",\"boothnum\":\"肉001-002\"}");
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(
scoket.getInputStream(),"UTF-8"));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
ChatManage.getChatManage().sent(this, line);
}
br.close();
System.out.println("断开了一个客户端链接");
ChatManage.getChatManage().remove(this);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
System.out.println("断开了一个客户端链接");
ChatManage.getChatManage().remove(this);
e.printStackTrace();
}
}
}
管理器 加入队列
public class ChatManage {
private ChatManage(){}
private static final ChatManage cm=new ChatManage();
public static ChatManage getChatManage(){
return cm;
}
Vector<ChatScoket> vector =new Vector<ChatScoket>();
public void add(ChatScoket cs) {
vector.add(cs);
}
public void remove(ChatScoket cs) {
vector.remove(cs);
}
public void sent(ChatScoket cs,String out) {
for (int i = 0; i < vector.size(); i++) {
ChatScoket cschat=vector.get(i);
if(!cs.equals(cschat)){
cschat.out(out);
}
}
}
}
我主要做的是从服务器获取数据在android 客户端显示:
所以在服务器端加一个时钟,一定时间发送一次数据,客户端自动显示。
下载android 端 :http://download.csdn.net/detail/u012922981/9529743
下载服务器端:http://download.csdn.net/detail/u012922981/9529728
服务器端在esplice 里面运行,他们建立连接主要是端口号;随后还的做相应的过滤,不同客户端接受的数据不一样的结果,进一步编程中;随后更新;看不懂代码,就去看我上面的学习视频;