我的android学习笔记25—socket

以下内容来自对mars老师android视频的学习,纯属个人学习笔记,谨以此鼓励自己学习!!微笑

                                                                                                                                                                                                   ———— 感谢mars老师无私的奉献

我的android学习笔记25—Socket

一、基本概念
Socket:用于描叙ip地址和端口,是一个通信连的句柄;应用程序通常通过socket向网络发出请求或者应答网络请求。
UDP (User Datagram Protocol) : 用户数据报协议,无连接,面向报文,尽最大努力交付,没有拥塞控制,支持一对多,一对一,多对多,多对一的交互通信。
TCP(Transmission Control Protocol):传输控制协议,面向连接,只能有两个端点,可靠交付,全双工通信,面向字节流。

二、Socket编程
(1)TCP的socket
      1、Server端
class StartSocketListener implements OnClickListener{
@Override
public void onClick(DialogInterface dialog, int which) {
	// TODO Auto-generated method stub
	new ServerTherad().start();
}
}

class ServerTherad extends Thread{
	@Override
	public void run() {
		// TODO Auto-generated method stub
		//声明一个ServerSocket对象
		ServerSocket serverSocket = null;
		try {
			//创建一个ServerSocket对象,并让这个Socket在4567端口监听
			serverSocket =new ServerSocket(4567);
			//调用serverSocket的accept()方法,接受客户端发送的请求
			Socket socket=serverSocket.accept();//如果没请求可接受就会一直等待,知道接受到客户端的请求
			//从socket中得到InputStream对象
			InputStream inputStream=socket.getInputStream();

			byte buffer [] =new byte[1024*4];
			int temp=0;
			//从InputStream中读取客户端所发送的数据
			while((temp=inputStream.read(buffer))!=-1){
				System.out.println(new String (buffer,0,temp));
				}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally{
			try {
				serverSocket.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	
	}
}

2、Client端
	try {
		//create a socket object ,appoint the ip and port
		Socket socket =new Socket("192.168.1.2",4567);
		//get the date of the file by InputStream 
		InputStream inputStream = new FileInputStream("f://hello.txt");
		//get the outputstream from socket
		OutputStream outputStream =socket.getOutputStream();
		byte buffer []=new byte[4*1024];
		int temp=0;
		//write the date of inputstream to outputstream
		while((temp=inputStream.read(buffer))!=-1){
			outputStream.write(buffer, 0, temp);
		}
		outputStream.flush();
	} catch (UnknownHostException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}



(2)UDP socket
1、Server端
pubic void run()
{
    try
     {
        //create a data gramSocket object ,appiont ip and port 
        DatagramSocket socket= new datagramSocket(4567);
        byte data[] new byte[1024];
       //create a null datagramPacket object datageramPacket packet = new DatagramPacket(data, data.length);
        socket.receive(packet);

      }
	
     catch (Exception e)
	{
	     e.printStackTrace();
        }
}


2、Client端
		try {
			//create a datagramSocket object 
			DatagramSocket socket= new DatagramSocket(4567);
			//create a inetaddree
			InetAddress serverAddress= InetAddress.getByName("192.068.1.1");
			String str="hello";
			byte data[] =str.getBytes();
			//create a datagramPacket object and appiont the address which data to be sent
			DatagramPacket packet=new DatagramPacket(data.data.length,serveraddress,4567);
			//call the send function of socket
			 socket.send(packet);
		} catch (SocketException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值