zoukankan      html  css  js  c++  java
  • android Socket 编程

    Socket 通信

     1.UDP实现  (DatagramSocket)

    【客户端】

    //首先创建一个DatagramSocket对象

    DatagramSocket socket = new DatagramSocket(4567);

    //创建一个InetAddress

    InetAddress serverAddress = InetAddress.getByName("192.168.1.104");

    String str = "hello";  

    //这是要传输的数据 byte data [] = str.getBytes();

     //把传输内容分解成字节

    //创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个、地址,以及端口号

    DatagramPacket packet = new DatagramPacket(data,data.length,serverAddress,4567);

    //调用socket对象的send方法,发送数据

    socket.send(packet);

    【服务器端】

    //创建一个DatagramSocket对象,并指定监听的端口号                

    DatagramSocket socket = new DatagramSocket(4567);    

     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());

    2.TCP通信

    【客户端】

    创建一Socket对象并指明服务器端的IP及端口号

    Socket socket = new Socket("192.168.1.0",45678);

    //向服务器发送消息

    PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);

    out.println(message);

    //从服务器接收消息

    BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));

    String rString = is.readLine().toString();

    【服务器端】

    //创建一个ServerSocket对象,并让这个Socket在45678端口监听

    serverSocket = new ServerSocket(45678);

    //调用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) {

                       String str = new String(buffer,0,temp);

      //接下来可以对从客户端接收到的消息做处理                

    }

      

    【Socket获取客户端IP地址及端口号】

       Socket类包含一些非常有用的属性,这些属性允许确定关于正在连接的客户端的信息。其中关键信息之一    是返回EndPoint对象的RemoteEndPoint属性。

    EndPoint类本身是抽象的,要想收集有用的信息,需·要把    EndPoint强制类型转换为IPEndPoint对象。

    IPEndPoint类包含远程客户端的IP地址和端口号。具体用法如下:    

    TcpListener tcpl=new TcpListener(port);    

    Socket s=tcpl.AcceptSocket();    

    label1.text=((IPEndPoint)s.RemoteEndPoint).Address.ToString();

     label2.text=((IPEndPoint)s.RemoteEndPoint).Port.ToString();

  • 相关阅读:
    structs2---OGNL表达式
    六种获取配置properties文件的方法
    java poi导出Excel 总结
    Linux中发布项目的一些命令笔记
    JavaScript 闭包
    常见数据库连接方式
    Docker(五):镜像
    Docker(四):docker的安装
    Ubuntu命令
    Docker(三):Docker的基本概念
  • 原文地址:https://www.cnblogs.com/lzjsky/p/5035371.html
Copyright © 2011-2022 走看看