Android学习笔记-网络编程
2016-02-04 11:06
399 查看
1.使用UDP协议传输数据
UDP协议不可靠,数据包发送出去之后无法确定是否被接收方接收到
在Java里写好Server如下
[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();
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();
相关文章推荐
- WebService学习笔记-XML&Schema&HTTP
- servlet学习六--HttpServletRequest对象学习
- servlet学习四--HttpServletResponse对象学习二
- servlet学习三--HttpServletResponse对象学习
- CORS 跨域 node |XMLHttpRequest 跨域提交数据 node
- Qt之进程间通信(TCP/IP)
- Qt之进程间通信(TCP/IP)
- Android 网络请求Volley库完全解析,Volley的基本用法(二)
- 使用 obfsproxy 混淆网络流量
- 知名网络后端开源软件集合
- TCP服务器端和客户端程序设计
- HttpMessageNotWritableException: Could not write JSON: No serializer found for class ****
- https 后面补充session
- 2016SEM百度竞价如何分词【太原网络营销师】{郭文军}解析
- 厦门巨游网络科技有限公司(HOTPOWER)承接游戏UI外包
- #TCP你学得会# 之 当listen和accept遇到fork
- 网络工程 POST与GET请求方法的本质区别
- 基于TCP流协议的数据包通讯
- TCP与IP协议的相互作用
- https填坑之旅