码迷,mamicode.com
首页 > 编程语言 > 详细

java基础 UDP通信

时间:2018-03-10 11:46:55      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:server   打印   通过   存储   pre   get   ips   localhost   packet   

无连接通信 UDP

客户端

package com.swift.test;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

/*使用UDP通信编写一个Java程序.要求:获取键盘输入的内容.发送到服务端.服务端接收后.在控制台上打印接收到的内容
客戶端
    1.创建键盘录入对象.获取键盘录入数据
    2.创建DatagramSocket对象
    3.创建DatagramPacket对象.并封装键盘录入的数据
    4.发送数据
    5.释放流资源
服務端
    1.创建DatagramSocket对象
    2.创建DatagramPacket对象
    3.接收数据存储到DatagramPacket对象中
    4.获取DatagramPacket对象的内容
    5.在控制台上打印接收到的内容
    6.释放流资源
*/


public class DemoUDPClient {

    public static void main(String[] args) throws IOException {

        Scanner scan=new Scanner(System.in);
        System.out.println("请输入要传达的内容:");
        String str=scan.nextLine();
        DatagramSocket datagramSocket=new DatagramSocket();
        byte[] buf=str.getBytes();
        DatagramPacket datagramPacket=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.105.22"),6464);
        datagramSocket.send(datagramPacket);
        datagramSocket.close();
    }

}

服务端

package com.swift.test;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/*使用UDP通信编写一个Java程序.要求:获取键盘输入的内容.发送到服务端.服务端接收后.在控制台上打印接收到的内容
客戶端
    1.创建键盘录入对象.获取键盘录入数据
    2.创建DatagramSocket对象
    3.创建DatagramPacket对象.并封装键盘录入的数据
    4.发送数据
    5.释放流资源
服務端
    1.创建DatagramSocket对象
    2.创建DatagramPacket对象
    3.接收数据存储到DatagramPacket对象中
    4.获取DatagramPacket对象的内容
    5.在控制台上打印接收到的内容
    6.释放流资源
*/

public class DemoUDPServer {

    public static void main(String[] args) throws IOException {

        DatagramSocket datagramSocket=new DatagramSocket(6464);
        InetAddress ip=InetAddress.getLocalHost();
        String ipString=ip.getHostAddress();
        String nameString=ip.getHostName();
        System.out.println(ipString+" "+nameString);
        byte[] buf=new byte[1024];
        DatagramPacket datagramPacket=new DatagramPacket(buf,1024);
        datagramSocket.receive(datagramPacket);
        System.out.println(new String(buf));
        datagramSocket.close();
        
    }

}

结果

技术分享图片

 有连接通信TCP

客户端

package com.swift.test;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

/*使用socket编写一个Java程序,要求:客户端发送内容“我是客户端”到服务端,服务端接收后,在控制台上打印接收到的内容,并返回内容“我来自服务端”到客户端,客户端接收服务端的发送的内容后将接收内容打印在控制台
?客户端
    1.创建客户端的Socket对象
    2.获取Socket的输出流对象
    3.写数据给服务器
    4.获取Socket的输入流对象
    5.使用输入流,读反馈信息
    6.关闭流资源
*/

public class DemoTCPClient {

    public static void main(String[] args) throws IOException {

        Socket s=new Socket(InetAddress.getByName("10.254.3.116"),8888);
        OutputStream out=s.getOutputStream();
        byte[] buf="我是客户端".getBytes();
        out.write(buf);
        InputStream in=s.getInputStream();
        byte[] bytes=new byte[128];
        in.read(bytes);
        System.out.println(new String(bytes));
     s.close(); } }

服务端

package com.swift.test;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

/*使用socket编写一个Java程序,要求:客户端发送内容“我是客户端”到服务端,服务端接收后,在控制台上打印接收到的内容,并返回内容“我来自服务端”到客户端,客户端接收服务端的发送的内容后将接收内容打印在控制台

?服务器端
    1.创建服务器端ServerSocket对象,指定服务器端端口号
    2.开启服务器,等待着客户端Socket对象的连接,如有客户端连接,返回客户端的Socket对象
    3.通过客户端的Socket对象,获取客户端的输入流,为了实现获取客户端发来的数据
    4.通过客户端的输入流,获取流中的数据
    5.通过客户端的Socket对象,获取客户端的输出流,为了实现给客户端反馈信息
    6.通过客户端的输出流,写数据到流中
    7.关闭流资源*/

public class DemoTCPServer {

    public static void main(String[] args) throws IOException {

        ServerSocket serverSocket=new ServerSocket(8888);
        InetAddress ip=InetAddress.getLocalHost();
        System.out.println(ip.getHostAddress());
        Socket s=serverSocket.accept();
        InputStream in=s.getInputStream();
        byte[] buf=new byte[128];
        in.read(buf);
        System.out.println(new String(buf));
        OutputStream out=s.getOutputStream();
        out.write("我来自服务端".getBytes());
     serverSocket.close();
     s.close();
} }

 

java基础 UDP通信

标签:server   打印   通过   存储   pre   get   ips   localhost   packet   

原文地址:https://www.cnblogs.com/qingyundian/p/8537471.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!