首页 > 其他 > 详细

TCP和UDP

时间:2016-03-02 23:22:53      阅读:197      评论:0      收藏:0      [点我收藏+]

1.tcp协议的编程

 * 1:客户端。步骤
 *         1:创建Socket对象,构造方法里需要指定服务端的ip地址和端口.
 *         Socket socket = new Socket(服务端的ip地址或者InetAddress对象,服务端的端口);
 *         2:如果想要从服务端读取数据,那么就需要获得输入管道:InputStream
 *           如果想将数据写到服务端,则需要获得输出管道:OutputStream
 *             读取数据:  InputStream is = socket.getInputStream();
 *             发送数据:   OutputStream os = socket.getOutputStream();
 *         3:准备数据,用InputStream来读取数据,或者用OutputStream来向服务端写入数据,
 *             读数据 : is.read(数据)
 *             写数据:os.write(数据)
 *         4:关闭流,关闭Socket。
 *             is.close();
 *             os.close();
 *             socket.close();
 * 2:服务端:步骤
 *     1;创建ServerSocket对象,并且指定监听的端口。
 *     ServerSocket ss = new ServerSocket(9999);
 *     2:调用accept方法,监听是否有客户端连接。如果连接上则分配一个Socket.
 *     3:获得Socket的读取管道和输出管道。再进行读取和写入数据。
 *     4:将Socket关闭。
 *     5:将ServerSocket关闭。

2.TCP的发送和接收

* 发送

        // 创建套接字。它会自动到指定ip地址的指定端口。
        Socket socket = new Socket("127.0.0.1", 9999);
        // 发送数据。
        String str = "tcp,我来了";
        // 得到输出管道。
        OutputStream os = socket.getOutputStream();
        os.write(str.getBytes());
        os.close();
        socket.close();

* 接收

        ServerSocket ss = new ServerSocket(9999);
        //监听是否有客户端连接到本服务器端。如果有连接,则分配一个Socket。
        Socket socket = ss.accept();//阻塞式的方法。
        //获得输入管道。
        InputStream is = socket.getInputStream();
        byte[] b =new byte[1024];
        //返回本次读取的字节数量。
        int length = is.read(b);
        System.out.println(new String(b,0,length));
        ss.close();

 

3.UDP发送和接收

* 发送

        InetAddress ia = InetAddress.getLocalHost();//本机地址
        Scanner scanner = new Scanner(System.in);
        String sendIn = scanner.nextLine();
        DatagramSocket socket = new DatagramSocket();
        byte[] b = sendIn.getBytes();
        DatagramPacket p = new DatagramPacket(b, b.length, ia, 9900);
        socket.send(p);
        socket.close();        

 

* 接收

        DatagramSocket socket = new DatagramSocket(9900);
        byte[] b = new byte[1024];
        DatagramPacket p = new DatagramPacket(b, b.length);
        socket.receive(p);
        System.out.println(p.getAddress().getHostAddress()+p.getPort()+(new String(b,0,b.length)));

TCP和UDP

原文:http://www.cnblogs.com/anni-qianqian/p/5236656.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!