您的位置:首页 > 理论基础 > 计算机网络

Android学习笔记-网络编程

2016-02-04 11:06 399 查看
1.使用UDP协议传输数据

UDP协议不可靠,数据包发送出去之后无法确定是否被接收方接收到
在Java里写好Server如下
 args) {
while (true) {
try {
// 创建一个DatagramSocket对象,并指定监听的端口号
DatagramSocket socket = new DatagramSocket(4572);
byte data[] = new byte[1024];
// 创建一个空的DatagramPacket对象
DatagramPacket packet = new DatagramPacket(data, data.length);
// 使用receive方法接收客户端所发送的数据
socket.receive(packet);
String result = new String(packet.getData(),
packet.getOffset(), packet.getLength());
date = Calendar.getInstance().getTime();
System.out.println(date);
System.out.println("result--->]客户端在Android里面编写

界面activity_main.xml  <Button 
android:id="@+id/sendMessage"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="发送消息"
    />
Android4.0+操作系统中连接网络的操作不能在主线程中进行

[code=java;toolbar:false">public class MainActivity extends Activity {

private Button sendMessage = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

sendMessage = (Button) findViewById(R.id.sendMessage);
sendMessage.setOnClickListener(new clientListener());

}

class clientListener implements OnClickListener{

@Override
public void onClick(View v) {
HandlerThread handlerThread = new HandlerThread("handler_Thread");
            handlerThread.start();
            ClientHandler clientHandler = new ClientHandler(handlerThread.getLooper());
            Message msg = clientHandler.obtainMessage();
            Bundle bundle = new Bundle();
            msg.setData(bundle);
            // 将msg发送到目标对象,即生成msg对象的Handler对象
            msg.sendToTarget();
}

}

class ClientHandler extends Handler {
        public ClientHandler() {
 
        }
 
        public ClientHandler(Looper looper) {
            super(looper);
        }
 
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            Bundle bundle = msg.getData();
            try {
// 首先创建一个DatagramSocket对象
DatagramSocket socket = new DatagramSocket(4572);
// 创建一个InetAddree
InetAddress serverAddress = InetAddress.getByName("192.168.77.215");
String str = "hello";
byte data[] = str.getBytes();
// 创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个地址,以及端口号
DatagramPacket packet = new DatagramPacket(data,
data.length, serverAddress, 4572);
// 调用socket对象的send方法,发送数据
socket.send(packet);
socket.close();
Toast.makeText(MainActivity.this, "数据已发送", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
        }
    }
}public class TCPServer {
public static void main(String[] args) throws IOException {
ServerSocket listen = new ServerSocket(5050);

Socket server = listen.accept();

InputStream in = server.getInputStream();
OutputStream out = server.getOutputStream();

char c = (char) in.read();
System.out.println("收到:" + c);

out.write('s');

out.close();
in.close();
server.close();
listen.close();
}

}Looper.prepare();
Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
Looper.loop();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: