只做demo没有严格逻辑和代码优化,借鉴的自行修改。
=====================server=================:
package com.hoosen.ham.task.service;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class AsycnDataService implements Runnable{
publicstatic final String SERVERIP ="192.168.1.103";
publicstatic final int SERVERPORT = 8641;
public voidrun() {
try{
ServerSocketserverSocket = newServerSoc--ket(SERVERPORT);
System.out.println("server start ……");
while (true){
//等待接受客户端请求
Socketclient = serverSocket.accept();
System.out.println("receiving...");
try{
//接受客户端信息
BufferedReader in = new BufferedReader(
newInputStreamReader(client.getInputStream()));
//发送给客户端的消息
PrintWriterout = new PrintWriter(new BufferedWriter(
newOutputStreamWriter(client.getOutputStream())),true);

while(client.isConnected() && !client.isClosed()){
String str =in.readLine(); // 读取客户端的信息
if (str !=null ) {
System.out.println("received: '" + str +"'");
//设置返回信息,把从客户端接收的信息再返回给客户端
if("1".equals(str) ){
out.println("str");
}elseif("file".equals(str)){
out.println("filecontent");
}elseif("-1".equals(str)){
client.close();
System.out.println("closed!");
}
out.flush();
} else{
System.out.println("Not receiver anything fromclient!");
}
}
} catch(Exception e) {
e.printStackTrace();
} finally{
client.close();
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
publicstatic void main(String [] args ) {
newThread(new AsycnDataService()).start();
}
public voiddown(){
}
}
=====================client=================:
package com.hoosen.ham.task.service;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class AndroidAsysnDataDown {
Socketsocket = null;
PrintWriterout;
BufferedReader in;
booleanbRecive = true;
publicAndroidAsysnDataDown(){
init();
}
private voidinit(){
try {
InetAddress serverAddr =InetAddress.getByName("192.168.1.103");
socket = new Socket(serverAddr, 8641);
//将信息通过这个对象来发送给Server
out = new PrintWriter(newBufferedWriter(
newOutputStreamWriter(socket.getOutputStream())),
true);
//接收服务器信息
in = newBufferedReader(
newInputStreamReader(socket.getInputStream()));
} catch(UnknownHostException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
}
}
public voidsend(String cmd){
if(socket.isConnected() ){
//把用户输入的内容发送给server
if(!socket.isOutputShutdown()){
out.println(cmd);
out.flush();
}
System.out.println("c:send " + cmd);
}
}
public voidrecive(){
try {
while(bRecive){
if(socket.isConnected() && !socket.isInputShutdown()){
//得到服务器信息
String msg=null;
if((msg =in.readLine()) != null ){
//在页面上进行显示
System.out.println("接收:"+msg);
if("str".equals(msg)){
send("file");
}else if("filecontent".equals(msg)){
bRecive=false;
}
}
}
}
} catch(Exception e) {
e.printStackTrace();
} finally {
}
}
public voidclose(){
System.out.println("关闭");
if(socket !=null){
try{
send("-1");
socket.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
publicstatic void main(String[] args) {
AndroidAsysnDataDown asd = new AndroidAsysnDataDown();
asd.send("1");
asd.recive();
asd.close();
}
}