当前位置: 代码迷 >> Android >> Android学习札记(二十二)
  详细解决方案

Android学习札记(二十二)

热度:9   发布时间:2016-05-01 18:14:06.0
Android学习笔记(二十二)

Socket编程

?

TCPServer

import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;public class TCPServer {	public static void main(String args[]) {		try {			while (true) {				ServerSocket ss = new ServerSocket(6666);				Socket sk = ss.accept();				InputStream inStream = sk.getInputStream();				int length = 0;				byte[] buffer = new byte[1024];				while ((length = inStream.read(buffer)) != -1) {					System.out.print(new String(buffer, 0, length));				}				sk.close();			}		} catch (Exception e) {			e.printStackTrace();		}	}}

?

TCPClientActivity

package org.wp.activity;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class TCPClientActivity extends Activity {	private Button sendButton;	@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.main);		sendButton = (Button) this.findViewById(R.id.sendButton);		sendButton.setOnClickListener(new View.OnClickListener() {			@Override			public void onClick(View v) {				new TCPClient().start();			}		});	}	class TCPClient extends Thread {		@Override		public void run() {			try {				Socket sk = new Socket("192.168.1.105", 6666);				InputStream inStream = TCPClientActivity.this.getClassLoader()						.getResourceAsStream("workers.xml");				OutputStream outStream = sk.getOutputStream();				byte[] buffer = new byte[1024];				int length = inStream.read(buffer);				while (length != -1) {					outStream.write(buffer, 0, length);					length = inStream.read(buffer);				}			} catch (Exception e) {				e.printStackTrace();			}		}	}}

?

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"	package="org.wp.activity" android:versionCode="1" android:versionName="1.0">	<application android:icon="@drawable/icon" android:label="@string/app_name">		<activity android:name=".TCPClientActivity" android:label="@string/app_name">			<intent-filter>				<action android:name="android.intent.action.MAIN" />				<category android:name="android.intent.category.LAUNCHER" />			</intent-filter>		</activity>	</application>	<!-- Allows applications to open network sockets -->	<uses-permission android:name="android.permission.INTERNET" />	<uses-sdk android:minSdkVersion="4" /></manifest>

?

?

UDPServer

import java.net.DatagramPacket;import java.net.DatagramSocket;public class UDPServer {	public static void main(String args[]) {		try {			DatagramSocket ds = new DatagramSocket(6666);			byte[] buffer = new byte[1024];			DatagramPacket dp = new DatagramPacket(buffer, buffer.length);			ds.receive(dp);			String result = new String(dp.getData(), dp.getOffset(),					dp.getLength());			System.out.println(result);		} catch (Exception e) {			e.printStackTrace();		}	}}

?

UDPClientActivity

package org.wp.activity;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class UDPClientActivity extends Activity {	private Button sendButton;	@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.main);		sendButton = (Button) findViewById(R.id.sendButton);		sendButton.setOnClickListener(new View.OnClickListener() {			@Override			public void onClick(View v) {				new UDPClient().start();			}		});	}	class UDPClient extends Thread {		@Override		public void run() {			try {				InputStream inStream = UDPClientActivity.class.getClassLoader()						.getResourceAsStream("workers.xml");				BufferedReader br = new BufferedReader(new InputStreamReader(						inStream));				StringBuilder sb = new StringBuilder();				String str = null;				while ((str = br.readLine()) != null) {					sb.append(str + "\n");				}				byte[] buffer = sb.toString().getBytes();				DatagramSocket ds = new DatagramSocket(8888);				InetAddress inetAddress = InetAddress						.getByName("192.168.1.105");				DatagramPacket dp = new DatagramPacket(buffer, buffer.length,						inetAddress, 6666);				ds.send(dp);			} catch (Exception e) {				e.printStackTrace();			}		}	}}

?

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"	package="org.wp.activity" android:versionCode="1" android:versionName="1.0">	<application android:icon="@drawable/icon" android:label="@string/app_name">		<activity android:name=".UDPClientActivity" android:label="@string/app_name">			<intent-filter>				<action android:name="android.intent.action.MAIN" />				<category android:name="android.intent.category.LAUNCHER" />			</intent-filter>		</activity>	</application>	<!-- Allows applications to open network sockets -->	<uses-permission android:name="android.permission.INTERNET" />	<uses-sdk android:minSdkVersion="4" /></manifest>

?

?

?

  相关解决方案