android_Socket

来源:互联网 发布:辅助软件是什么意思 编辑:程序博客网 时间:2024/05/18 13:43
Socket定义

    Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

    

基于TCP/IP协议的Socekt

使用Socket实现客户端的步骤;
     1
、通过IP地址和端口实例化Socket,请求连接服务器
     2
、获取Socket上的流以进行读写
     3
、把流包装进BufferReader/PrintWriter的实例
     4
、对Socket进行读写
     5
、关闭打开的流
     
创建服务器的步骤:
     1
、指定端口实例化一个ServerSocket
     2
、调用ServerSocketaccept()以在等待连接期间造成阻塞
     3
、获取位于该层Socket的流以进行读写操作
     4
、将数据封装成流
     5
、对Socket进行读写
     6
、关闭打开的流

try{
    InetAddress ia = InetAddress.getByName("192.168.1.110");//IP
地址
    Socket sk = new Socket(inetAddress,8888,true);//
端口
    InputStream is =sk.getInputStream();//
得到数据
    OutputStream os = sk.getOutputStream();
    .....//
数据处理
    }catch(Exception e){
 }

   创建一个服务器端的代码:
    
ServerSocket server = null;
     try{
      server = new ServerSocket(8888);

      Socket socket = new server.accpet();//accpet()为一个阻塞函数

//服务器端在33221端口号监听客户请求,在这里服务器端只能接收一个请求,接收后服务器端就退出了。实际的应用中总是让他不停地循环接收,一旦有客户请求,服务器端总是会创建一个服务器线程来服务新来的客户,而自己则继续监听。
     }catch(Exception e){     
     }

Socket 提供了getInputStream()getOutPutStream()来得到对应的输入(输出)流以进行读()操作,这两个方法分别返回InputStreamOutputStream类对象。

基于UDP协议的Socket

InetAddress remoteIP = InetAddress.getByName("localhost");

DatagramSocket socket = new DatagramSocket();

BufferedReader wt = new BufferedReader (new InputStreamReader(System.in));

DatagramPacketoutputPacket=new DatagramPacket(outputData,outputData.length,remoteIP,8000);
socket.send(outputPacket);

客户端

DatagramSocket udpSocket = new DatagramSocket(8000);

DatagramPacket packet = new DatagramPacket(new byte[512],512);  // UDP数据读取

udpSocket.receive(packet);
String msg = new String(packet.getData()), 0,packet.getLength());


0 0
原创粉丝点击